// hasOwnProperty approach
for (key in obj) {
if (obj.hasOwnProperty(key)) {
value = obj[key];
}
}
// Object.keys approach
keys = Object.keys(obj);
for (i = 0, l = keys.length; i < l; i++) {
value = obj[keys[i]];
}
50% + Neden bu http://jsperf.com/object-keys-vs-hasownproperty/45Object.keys neden hasOwnProperty'den daha hızlıdır? jsperf Object.keys yaklaşıma göre
olduğunu hızlıdır?
Testiniz beklediğiniz gibi olmayabilir, basit bir optimizasyon yapar: 'keys = Object.keys (obj); değer = obj [keys [keys.length - 1]]; 'döngüleri atlayarak. İlk testte, her döngüde bir kontrol yapar, ikincisi sadece – Hacketo
değeri ile bir değişken doldurmaktır. Belli ki 'in' dizisi 'Object.keys'den daha fazlasını yapmalı ve ek olarak hasOwnProperty için filtrelemelidir. 'daha fazla iş var. – Bergi
Belki 'Object.keys' yalnızca bir kez çağrılırken, 'hasOwnProperty' adlı defalarca çağrılır (bir kez her sayılabilir özellik için bir kez ve her bir sayısız özelliği için bir kez). Daha fazla işlev çağrısı daha yavaş kod anlamına gelir. Ayrıca, 'Object.keys' yerel bir işlevdir. Bu nedenle, her olasılıkta, aynı bir JavaScript şemasından daha hızlıdır. –