js对象属性

数据属性

  • [[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属性了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章