在以下語句中,Object#hasOwnProperty()
用於檢查當前屬性是否是對象實例的屬性,而不是來自原型鏈。這意味着永遠不會考慮這種情況,for
循環將遍歷原型鏈中包含的整個屬性列表。如何查看對象的實例屬性?
for (key in obj)
if (obj.hasOwnProperty(key)) {
iterator.call(context, obj[key], key);
}
}
我想知道是否有擺脫這種行爲方式和只有經過一個對象實例的屬性列表?
正如通過標籤所提到的,我主要是問性能利益問題。我正在做這個精度,因爲一個響應提議使用Object#getOwnPropertyNames()
,但我看到的所有基準似乎都證明for…in
與hasOwnProperty
與getOwnPropertyNames
是相當不利的getOwnPropertyNames
。例如:jsperf.com/for-in-vs-object-getownpropertynames或jsperf.com/for-in-vs-getownpropertynames-and-foreach/5
謝謝!事情是,我看到的所有基準似乎都證明'for ... in' with'hasOwnProperty'與'getOwnPropertyNames'對於'getOwnPropertyNames'非常不利。例如:http://jsperf.com/for-in-vs-object-getownpropertynames或http://jsperf.com/for-in-vs-getownpropertynames-and-foreach/5 –