數據屬性
- [[Enumerable]]:是否可遍歷,也就是是否可以通過for-in找到該屬性,默認爲true
- [[Writable]]:是否可修改,默認爲true
- [[Value]]:屬性值,默認undefined
[[Configuarble]]:表示能否通過delete屬性從而重新定義屬性,能否修改屬性的特徵,總的來說就是是否允許修改屬性,默認值爲true
var obj = {
age:20,
name:'ming'
}
// 對於直接在字面量中定義的屬性,configurable,writable,enumerable屬性都是true
// 對於在defineProperty中定義的屬性,configurable,writable,enumerable屬性都是false
Object.defineProperty(obj,'name',{
writable:false, // 不寫也沒關係,反正都是false
configurable:true,
value:'dong'
})
console.log(obj.name) // dong
obj.name="wei";
console.log(obj.name) //dong,因爲不能修改
console.log(Object.getOwnPropertyDescriptor(obj,'name')) // 查看屬性
delete obj.name;
console.log(obj) //{name:20} name屬性被刪除了
console.log(Object.getOwnPropertyDescriptor(obj,'name')) // undefined,沒有name屬性了