描述符
var stu = {
name: "tom",
birthday: "1995-08-01",
ID: 341226199508011574
}
Object.defineProperty(stu, "age", {
value: 20,
configurable: true, //默认是false
enumerable: true, //默认是false
writable: true //默认是false
})
delete stu.age //删除
for (var key in stu) { //遍历
console.log(key);
}
stu.age = 18 //修改
console.log(stu);
value
[ˈvæljuː]
属性的值
configurable
美 [kənˈfɪgjərəbl]
可配置性:是否可用
delete
删除
enumerable
[ɪ'njʊmərəbl]
可枚举性:是否可用
for...in
遍历
writable
美 [ˈraɪtəbl]
可写性:是否可以更改属性的值
获取对象的属性描述符
Object.getOwnPropertyDescriptor(obj, "name"); //获取属性名为name的属性描述符
Object.getOwnPropertyDescriptors(obj) //获取当前对象的所有属性的属性描述符
get
和set
出现时value
和writable
就没用了
get 一定要有返回值,set可以没有返回值
get
和 set
操作
两个操作做是互相作用的,在做动态数据时使用
var o = {
name: "小霸王学习机",
price: 100
}
Object.defineProperty(o, "dollar", {
get: function() {
return this.price * 0.14;
},
set: function(value) {
this.price = value / 0.14;
},
enumerable: true,
configurable: true
})
console.log(o.dollar); //激活get操作
o.dollar = 10 //只是为了激活set操作
console.log(o.dollar); //激活get操作
获得对象的属性名(对象的遍历)
-
for...in
-
Object.keys()
-
Object.getOwnPropertyNames()
判断当前对象中是否有某个属性
-
通过
in
关键字 -
通过
hasOwnProperty()