Object.defineProperty方法總結


1. 定義屬性的兩種形式

//1
var obj = {};
obj.name = 'ming';

//相當於
Object.defineProperty(obj,'name',{
    value : 'ming',
    writable: true,
    configurable: true,
    enumerable: true
})

//2
Object.defineProperty(obj,'name',{value: 'ming'})

//相當於
Object.defineProperty(obj,'name',{
    value: 'ming',
    writable: false,
    configurable: false,
    enumerable: false
})

2. defineProperty描述符

2.1 value 屬性值
2.2 writable 是否可以修改
2.3 configurable 是否可配置,是否可刪除

1. 是否可配置

Object.defineProperty(obj,'name',{configurable:false})

//再次配置描述符中的任何一個,包括value,都會報錯
Object.defineProperty(obj,'name',{...}) //Cannot redefine property: name

2. 是否可刪除

Object.defineProperty(obj,'name',{configurable:false})

delete obj.name //返回false

2.4 enumerable  是否可枚舉

是否可以在 for...in 或 Object.keys() 中遍歷

3. 設置只讀屬性

Object.defineProperty(obj,'name',{writable:false})

//只是設置writable為false,當configurable為true,同樣可以通過
Object.defineProperty(obj,'name',{value:'xxx'})修改值

//只讀設置應該是
Object.defineProperty(obj,'name',{writable:false,configurable:false})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM