![](/img/trans.png)
[英]Javascript inheritance of properties defined with Object.defineProperty
[英]Why properties added via Object.defineProperty are not iterable in Javascript
考慮以下代碼:
var a = {
get aa() {
return 'aa';
}
};
Object.defineProperty(
a,
'bb',
{
get: function() {
return 'bb';
}
}
);
for(p in a) {
sys.puts(p + ': ' + a[p]);
}
輸出是:
aa: aa
但是,物業bb是完全可訪問和工作。
為什么'bb'在for..in循環中不可見?
你必須將enumerable
設置為true
。
( 您也可以嘗試使用getOwnPropertyNames()
,但我不確定如何跨瀏覽器。 )
var a = {
get aa() {
return 'aa';
}
}, arr = [];
Object.defineProperty(
a,
'bb',
{
get: function() {
return 'bb';
},
enumerable: true
}
);
for(p in a) {
arr.push(p + ': ' + a[p]);
}
alert(arr.join("\n"));
因為此行為可能適用於添加元屬性。 可以通過設置enumerable屬性來更改行為。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty
對象屬性的“元屬性”的布爾字段都默認為false
,包括enumerable
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.