4 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
迭代屬性需要這個(gè)額外的hasOwnProperty
檢查:
for (var property in object) { if (object.hasOwnProperty(property)) { // do stuff }}
這是必要的,因?yàn)閷?duì)象的原型包含對(duì)象的附加屬性,這些屬性在技術(shù)上是對(duì)象的一部分。這些附加屬性繼承自基礎(chǔ)對(duì)象類,但仍然是屬性object
。
hasOwnProperty
只需檢查這是否是特定于此類的屬性,而不是從基類繼承的屬性。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
從JavaScript 1.8.5開(kāi)始,您可以使用Object.keys(obj)
獲取在對(duì)象本身上定義的屬性數(shù)組(返回true的屬性obj.hasOwnProperty(key)
)。
Object.keys(obj).forEach(function(key,index) { // key: the name of the object key // index: the ordinal position of the key within the object });
這比使用for-in循環(huán)更好(也更可讀)。
它支持這些瀏覽器:
Firefox(Gecko):4(2.0)
Chrome:5
Internet Explorer:9
有關(guān)更多信息,請(qǐng)參閱Mozilla Developer Network Object.keys()的參考。

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是for...in statement
(MDN,ECMAScript規(guī)范)。
你可以把它讀作“ FOR每個(gè)屬性IN的obj
對(duì)象,每個(gè)屬性分配給PROPT依次變量”。
添加回答
舉報(bào)