// 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]];
}
jsperf Object.keys दृष्टिकोण के अनुसार 50% + तेजी से http://jsperf.com/object-keys-vs-hasownproperty/45ऑब्जेक्ट.कीज़ की तुलना में तेज हैऑनप्रोपर्टी?
ऐसा क्यों है?
आपका परीक्षण वह नहीं हो सकता है जो आप उम्मीद कर रहे हैं, एक साधारण अनुकूलन करेगा: 'कुंजी = ऑब्जेक्ट.कीज (ओबीजे); मूल्य = obj [कुंजी [कुंजी। लम्बाई - 1]]; 'अपने loops को छोड़कर। पहले टेस्ट में, यह प्रत्येक लूप पर एक चेक करता है, क्योंकि दूसरा केवल – Hacketo
के साथ एक वैरिएबल भर रहा है, जाहिर है कि 'इन ऑब्जेक्ट' को 'ऑब्जेक्ट.की' से अधिक करने की ज़रूरत है, और अतिरिक्त रूप से 'हैऑनप्रोपर्टी के लिए फ़िल्टरिंग की आवश्यकता है 'और भी काम है। – Bergi
शायद क्योंकि 'ऑब्जेक्ट.कीएस' को केवल एक बार बुलाया जाता है जबकि 'हैऑनप्रॉपर्टी' को कई बार कहा जाता है (एक बार प्रत्येक गणना योग्य संपत्ति के लिए और एक बार प्रत्येक गैर-गणना योग्य संपत्ति के लिए)। अधिक फ़ंक्शन कॉल का मतलब धीमा कोड है। इसके अलावा, 'Object.keys' एक मूल कार्य है। इसलिए, सभी संभावनाओं में यह एक जावास्क्रिप्ट शिम की तुलना में तेज़ है। –