javascript属性non enumerable仍然可以找到… in
作者:互联网
我正在写一个小的javascript库:我已经定义了一个Item对象,然后添加了一个带有Item.prototype.addNumber的函数,最后我把它设置为不可枚举,但是如果我尝试使用for …来记录Item的方法循环功能仍然出现.
这是我的代码,我做错了吗? (在Chrome 18和Firefox 11上测试过)
function Item() {
...
}
Item.prototype.addString= function() {
...
}
Object.defineProperty(Item, "addString", { enumerable: false });
解决方法:
您在Item而不是Item.prototype上定义属性.
Object.defineProperty(Item.prototype, "addString", { enumerable: false });
如果您使用Object.defineProperty最初将addString添加到Item.prototype,那么您可以显式(或隐式)同时设置属性描述符…
这将隐式设置enumerable:false,以及可配置和可写的false.
Object.defineProperty(Item.prototype, "addString", {
value: function() {
...
}
});
或者,如果你只想要枚举为假,你可以这样做……
Object.defineProperty(Item.prototype, "addString", {
value: function() {
...
},
configurable: true,
writable: true
// ,enumerable: false // uncomment to be explicit, though not necessary
});
标签:javascript,enumerable 来源: https://codeday.me/bug/20190530/1183600.html