我试图使用 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
(一探究竟)。它是一个(构造函数)函数,它将创建一个具有名为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 演示
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)