编程语言
首页 > 编程语言> > javascript属性non enumerable仍然可以找到… in

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