[英]Inherited non-enumerable properties in for…in loop (JavaScript)
[英]Properties with 'enumerable' flag are listed in for/in loop?
我是javascript新手,現在開始學習。 我有以下關於for / in循環和javascript對象屬性的“可枚舉”屬性的查詢。
考慮以下代碼片段:
var base = {x:1, y:2, z:3}
var derived = Object.create(base)
derived["a"]=4
for(var prp in derived) { console.log(prp, derived.propertyIsEnumerable(prp)) }
對於上面的代碼,輸出為:
一個真實的
x錯誤
y錯誤
假
據我了解,繼承的屬性是不可枚舉的,我的問題是為什么它們在for / in循環中列出。
根據我的理解,輸出應為:
是真的。
如果我錯了,請糾正我?
從MDN :
每個對象都有一個propertyIsEnumerable方法。 該方法可以確定對象中的指定屬性是否可以通過for ... in循環枚舉, 但通過原型鏈繼承的屬性除外 。
for..in
將通過的任何對象的枚舉的屬性的重復,但propertyIsEnumerable
只會是true
為對象的“自己”的枚舉的屬性,以及false
的繼承者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.