[JS] 修改Navigator对象
在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对象相关推荐
- 直接修改html文本页面没变化,VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析...
本文实例讲述了VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法.分享给大家供大家参考,具体如下: 业务场景 我们在使用vue 编写 代码时,我们有一个 多行文本框控件,希望在页面 ...
- js的navigator对象的使用(浏览器信息)
window.navigator 对象包含有关访问者浏览器的信息. <!DOCTYPE html> <html> <body> <div id="e ...
- js 修改数组对象中的属性值
数据类型如下: var dataType=[{"type":"add",state":false},{"type":"u ...
- js中WINDOW对象中的navigator成员对象
js中DOM, DOCUMENT, BOM, WINDOW 区别 全栈工程师开发手册 (作者:栾鹏) js系列教程6-BOM操作全解 js中WINDOW对象中的navigator成员对象 naviga ...
- js 修改对象的键名,遍历动态传值
js 修改对象的键名,遍历动态传值 js循环遍历传值无效 输出的键 js循环遍历传值无效 let target = {field: "LAWSREGULATIONS_NAME",l ...
- 学习 JS navigator 对象
集合 描述 IE F O plugins[] 返回对文档中所有嵌入式对象的引用. 该集合是一个 Plugin 对象的数组,其中的元素代表浏览器已经安装的插件.Plug-in 对象提供的是有关插件的信息 ...
- JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...
Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...
- js给json对象添加、删除、修改属性
<script type="text/javascript">//json对象var json={ "firstName":"Bill&q ...
- 【一个小功能】从js判断ie版本,浅谈navigator对象的appName属性
判断IE版本主要的是获取两个属性,a.当前浏览器名称,b.当前浏览器版本,为此不得不了解navigator对象. 先贴代码 1 window.onload = function() { 2 var b ...
最新文章
- C++的类什么时候需要虚析构函数
- java函數_函數(Java版)
- 暴雪还不赶快?劳拉与光之守护者PC平台登陆
- 【powerdesign】从mysql数据库导出到powerdesign,生成数据字典
- vue点击切换类名_vue 新用户引导(vue-dirver)
- Android 自定义属性(attrs.xml,TypedArray)
- 17 MM配置-BP业务伙伴-定义业务伙伴角色
- nginx源码分析:打开监听套接字的流程
- python 读取excel 生成json 读取json
- python免费领取视频-quot;免费领取Python资源”
- 如何使用手机作为树莓派的显示屏幕
- python中*args和**kargs得用法总结
- 微众税银首席风险官许卫 :AI在金融风控领域的实践应用
- 2017计算机考研参考书目推荐,2017年中山大学085211计算机技术考研参考书目推荐...
- uniapp简单搞定支付传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐;而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这
- oracle 11g 连接远程服务器 数据库
- nextcloud——搭建自己的云盘
- mysql查询数据库中所有字段的属性
- 你想了解ADSS和OPGW光缆之间的区别吗?
- Android poi 根据已有模板生成新的doc文档
热门文章
- 二阶差分预测后数据还原公式_携程如何基于ARIMA时序分析做业务量的预测
- Linux第四章自测习题——Linux系列学习笔记
- 【题目解析】1015 Reversible Primes (20 分)_27行代码AC
- Mysql和Oracle获取自增主键
- 公平锁的lock()方法走读
- python 问题自动匹配解决方案_匹配字典集。最优雅的解决方案。Python
- 好用的Markdown编辑器推荐
- 改变Android的hello world程序字体颜色和背景颜色
- mongoclient php扩展,lnmp安装mongo扩展后,在实例化mongoClient()时出错
- 先进制造技术论文_干货分享:新能源汽车先进制造技术