我正在学习JavaScript和Node.js,并且我有一个关于Object.getOwnPropertyDescriptor()
函数的问题。请看下面的顶级代码:JavaScript:为什么getOwnPropertyDescriptor()包含自定义的继承属性?
var rectangle = {
width: 10,
height: 5,
get area() {
return this.width * this.height;
}
};
Object.prototype.x = 5;
var areaPropDesc = Object.getOwnPropertyDescriptor(rectangle, "area");
for (var attr in areaPropDesc) {
console.log("areaPropDesc["+attr+"] is: "+areaPropDesc[attr]);
}
当我执行上面的代码,这是输出:
areaPropDesc[get] is: function area() {
return this.width * this.height;
}
areaPropDesc[set] is: undefined
areaPropDesc[enumerable] is: true
areaPropDesc[configurable] is: true
areaPropDesc[x] is: 5
为什么在世界上是被列入的属性描述对象的x
属性area
属性?!
啊,是的。这很有道理。 – 2014-11-22 17:01:18