在Js中,对于普通的对象,你可以通过下列方法来增加/修改/删除一个实例属性

obj = new Object;
// 增加属性
obj.name = 123;
// 修改属性
obj.name = 321;
//删除属性
delete obj.name

但是对于浏览器的navigator对象,却无法通过上述方式对属性进行操作

针对navigator对象,你可以采用下列的方式来操作它的属性

Object.defineProperty(obj, 'key', { //descriptor })

这个属性可以是添加或修改现有的属性,obj就是要修改的对象,key就是属性名,descriptor是一个对象,用来表明新添属性的一些特性,包括6个参数:

  • configurable: 默认false,表示此属性是否可用delete删除
  • enumerable:默认为false,表示此属性是否可被for...in、Object.keys遍历到
  • value:默认undefined,此属性的值,可以是任何JavaScript类型
  • writable:默认为false,此属性是否可被改写
  • get: 默认undefined,指定一个函数,当属性被调用时,此函数也被调用,默认为返回属性值
  • set:默认undefined,指定一个函数,当属性被赋值时,此函数也被调用,仅接受一个参数,参数为属性被赋的值

例如修改navigator的webdriver的值:

Object.defineProperty(window.navigator, 'webdriver', {value:'123'})

注:不知道为什么,我把webdriver的configurable的改为true后会自动删除这个属性

属性被删除后再调用value会报错,需要先把属性添加回来

添加的方法可以用

Object.defineProperty(window.navigator, 'webdriver', {get:function(){return 123}})

函数调用的时候会返回123,这个时候也可以用value属性来操作它

对于function(){return 123} 我们可以采用ES6中新增的箭头函数来执行(相当于匿名函数(类似于python中的lambda))

Object.defineProperty(window.navigator, 'webdriver', {get:()=>123)

[JS] 修改Navigator对象相关推荐

  1. 直接修改html文本页面没变化,VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析...

    本文实例讲述了VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法.分享给大家供大家参考,具体如下: 业务场景 我们在使用vue 编写 代码时,我们有一个 多行文本框控件,希望在页面 ...

  2. js的navigator对象的使用(浏览器信息)

    window.navigator 对象包含有关访问者浏览器的信息. <!DOCTYPE html> <html> <body> <div id="e ...

  3. js 修改数组对象中的属性值

    数据类型如下: var dataType=[{"type":"add",state":false},{"type":"u ...

  4. js中WINDOW对象中的navigator成员对象

    js中DOM, DOCUMENT, BOM, WINDOW 区别 全栈工程师开发手册 (作者:栾鹏) js系列教程6-BOM操作全解 js中WINDOW对象中的navigator成员对象 naviga ...

  5. js 修改对象的键名,遍历动态传值

    js 修改对象的键名,遍历动态传值 js循环遍历传值无效 输出的键 js循环遍历传值无效 let target = {field: "LAWSREGULATIONS_NAME",l ...

  6. 学习 JS navigator 对象

    集合 描述 IE F O plugins[] 返回对文档中所有嵌入式对象的引用. 该集合是一个 Plugin 对象的数组,其中的元素代表浏览器已经安装的插件.Plug-in 对象提供的是有关插件的信息 ...

  7. JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...

    Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...

  8. js给json对象添加、删除、修改属性

    <script type="text/javascript">//json对象var json={ "firstName":"Bill&q ...

  9. 【一个小功能】从js判断ie版本,浅谈navigator对象的appName属性

    判断IE版本主要的是获取两个属性,a.当前浏览器名称,b.当前浏览器版本,为此不得不了解navigator对象. 先贴代码 1 window.onload = function() { 2 var b ...

最新文章

  1. C++的类什么时候需要虚析构函数
  2. java函數_函數(Java版)
  3. 暴雪还不赶快?劳拉与光之守护者PC平台登陆
  4. 【powerdesign】从mysql数据库导出到powerdesign,生成数据字典
  5. vue点击切换类名_vue 新用户引导(vue-dirver)
  6. Android 自定义属性(attrs.xml,TypedArray)
  7. 17 MM配置-BP业务伙伴-定义业务伙伴角色
  8. nginx源码分析:打开监听套接字的流程
  9. python 读取excel 生成json 读取json
  10. python免费领取视频-quot;免费领取Python资源”
  11. 如何使用手机作为树莓派的显示屏幕
  12. python中*args和**kargs得用法总结
  13. 微众税银首席风险官许卫 :AI在金融风控领域的实践应用
  14. 2017计算机考研参考书目推荐,2017年中山大学085211计算机技术考研参考书目推荐...
  15. uniapp简单搞定支付传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐;而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这
  16. oracle 11g 连接远程服务器 数据库
  17. nextcloud——搭建自己的云盘
  18. mysql查询数据库中所有字段的属性
  19. 你想了解ADSS和OPGW光缆之间的区别吗?
  20. Android poi 根据已有模板生成新的doc文档

热门文章

  1. 二阶差分预测后数据还原公式_携程如何基于ARIMA时序分析做业务量的预测
  2. Linux第四章自测习题——Linux系列学习笔记
  3. 【题目解析】1015 Reversible Primes (20 分)_27行代码AC
  4. Mysql和Oracle获取自增主键
  5. 公平锁的lock()方法走读
  6. python 问题自动匹配解决方案_匹配字典集。最优雅的解决方案。Python
  7. 好用的Markdown编辑器推荐
  8. 改变Android的hello world程序字体颜色和背景颜色
  9. mongoclient php扩展,lnmp安装mongo扩展后,在实例化mongoClient()时出错
  10. 先进制造技术论文_干货分享:新能源汽车先进制造技术