繁星coding
2019-05-27 13:51:42
迭代對象屬性var obj = { name: "Simon", age: "20", clothing: { style: "simple", hipster: false }}for(var propt in obj){ console.log(propt + ': ' + obj[propt]);}變量如何propt表示對象的屬性?它不是內(nèi)置方法或?qū)傩?。為什么它會出現(xiàn)在對象中的每個屬性?
4 回答

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

守著星空守著你
TA貢獻1799條經(jīng)驗 獲得超8個贊
從JavaScript 1.8.5開始,您可以使用Object.keys(obj)
獲取在對象本身上定義的屬性數(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)更多信息,請參閱Mozilla Developer Network Object.keys()的參考。

眼眸繁星
TA貢獻1873條經(jīng)驗 獲得超9個贊
添加回答
舉報
0/150
提交
取消