[英]javascript property non enumerable still found by for… in
我正在寫一個小的javascript庫:我已經定義了一個Item
對象,然后添加了一個帶有Item.prototype.addNumber
的函數,最后我把它設置為不可枚舉,但是如果我嘗試使用for...in
來記錄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
,以及writable
configurable
和writable
false
。
Object.defineProperty(Item.prototype, "addString", {
value: function() {
...
}
});
或者,如果你只想要enumerable
為false
,你可以這樣做......
Object.defineProperty(Item.prototype, "addString", {
value: function() {
...
},
configurable: true,
writable: true
// ,enumerable: false // uncomment to be explicit, though not necessary
});
您正在Item
的原型上直接在Object
(非可枚舉的)和另一個addString
(默認為可枚舉)上定義屬性( addString
)。
for ( in )
迭代原型鏈上的屬性,這就是它出現的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.