當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[JS] 修改Navigator对象
生活随笔
收集整理的這篇文章主要介紹了
[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对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis系列(十四)、Redis6新特
- 下一篇: js获取显卡型号