簡體   English   中英

在for / in循環中列出帶有“可枚舉”標志的屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM