- 获取对象属性
我们可以通过Object.getOwnPropertyDescriptor()
方法来获取一个对象的所有属性标签
Object.getOwnPropertyDescriptor({pro:true},'pro');
//Object.{value:true,wirtable:'true,enumerbale:true,configurable:true}
Object.getOwnPropertyDescriptor({pro:true},'a');//undefined
- 创建属性
value
这个属性值
writable
这个属性是否可写
enumerable
这个属性是否可以被遍历,被枚举
configurable
这个属性是否可以被修改 被delete
通过Object.defineProperty
去创建属性
var person={}
Object.definedProperty(peroson,'name',{
configurable:false,
writbale:false,
enumerable:true,
value:'Bosn Ma'
})
person.name;//Bosn Ma
person.name=1;
peroson.name;//Bosn Ma
delete peroson.name //false
- 同时创建多个
var person={}
Object.definedProperties(person,{
name:{value:'dudu',enumerable:true},
age:{value:'3',writable:true},
luck:{
get:function(){
return Math.random()>0.5?'good':'bad';
}
},
money:{
set:function(level){
this.age*=1+level*0.1;
}
}
})
Object.getOwnPropertyDescriptor( person,'name')
person.age; //3
person.money=2;
person.age;//3.6
在这里插入代码片
不可枚举的举例
var person={}
Object.defineProperty(person,'type',{
enumerable:false,
value:'1'
})
person.name='dudu'
Object.keys(person) // name
不会打印出type这个属性 因为其属性已经设置为不可枚举
- 修改属性问题
configurable
为false
时,只允许writable
从true
改为false
,
可能从安全性出发,减少修改权限,不可以增加修改权限。
以上内容均为个人学习笔记,不存在任何其他或者商业行为 ,如有侵权或者其他,必删除。请私聊或者评论告知。