说明
- 数据属性
- writable::如果为false,属性的值就不能被重写,默认:false
- configurable:如果为false,则不能删除目标属性或修改属性以下特性(writable, configurable, enumerable),默认:false
- enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来,默认false
- value:属性的初始值
- 访问属性
- get(): 用户访问属性的时候会调用该函数
- set(): 用户设置属性的时候会调用该函数
示例
var obj = {};
Object.defineProperties(obj, {
'name': {
//value: '张三',
// writable: true,
get: function() {
return '我的姓名叫做' + this.value;
},
set: function(v) {
this.value = v;
}
},
'age': {
value: '26',
enumerable: true
}
});
obj.name = "张三";
console.log(obj.name);
console.log(Object.keys(obj));
注意
value,writable不能和get,set共存,否则会报错
Uncaught TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
at Function.defineProperties (<anonymous>)