我正在尝试使用defineProperty来使属性不在for ... in循环中出现,但是它不起作用。此代码正确吗?
function Item() {
this.enumerable = "enum";
this.nonEnum = "noEnum";
}
Object.defineProperty(Item, "nonEnum", { enumerable: false });
var test = new Item();
for (var tmp in test){
console.log(tmp);
}
最佳答案
Item
没有名为nonEnum
(check it out)的属性。这是一个(构造函数)函数,它将创建一个具有名为nonEnum
的属性的对象。
因此,这将工作:
var test = new Item();
Object.defineProperty(test, "nonEnum", { enumerable: false });
您也可以这样编写此函数:
function Item() {
this.enumerable = "enum";
Object.defineProperty(this, "nonEnum", {
enumerable: false,
value: 'noEnum'
});
}
jsFiddle Demo