var a = Object.getOwnPropertyDescriptor({x:1},‘x‘);
console.log(a);
var a = Object.getOwnPropertyDescriptor({},‘x‘);
console.log(a); //underfined
var o = {};
// 添加一个不可枚举的数据属性x,并赋值为1
Object.defineProperty(o, ‘x‘, {
value: 1,
writable: true,
enumerable: false,
configurable: true
});
// 属性存在但不可枚举
o.x;
Object.keys(o);
// 对属性x做修改, 让它变为只读
Object.defineProperty(o, ‘x‘, {writable: false});
// 试图更改这个属性的值
o.x = 2; // 操作失败但不报错, 在严格模式中抛出类型错误异常
o.x;
// 属性依然是可配置的,因此可以通过这种方式进行修改
Object.defineProperty(o, ‘x‘, {value: 2});
o.x;
// 现在将x从数据属性修改为存取器属性
Object.defineProperty(o, ‘x‘, {
get: function () {
return 0;
}
});
o.x;
var p = Object.defineProperties({},{
x: { value:1, weitable:true, enumerable:true, configurable: true},
y: { value:1, writable:true, enumerable:true, configurable: true},
r: {
get: function(){ return Math.sqrt(this.x * this.y)},
enumerble: true,
configurable: true
}
});
原文:http://www.cnblogs.com/minimissile/p/7830851.html