2015-03-12 9 views
5

मैं ब्राउज़र बनाया-इन आदि पता लगाना ब्राउज़र वस्तु खोज का एक सा करने के लिए कोशिश कर रहा हूँ, ...ऑब्जेक्ट.की() और ... के लिए अलग क्यों हैं?

मैं अलग परिणाम देखा जब (बस FYI करें मैं क्रोम का उपयोग कर रहा खिड़की ऑब्जेक्ट के गुणों में प्राप्त करने की कोशिश संस्करण 41.0.2272.89 (64-बिट))।

Object.keys(window).length; 

7 कुंजी देता है। दस्तावेज़ों से Object.keys() किसी ऑब्जेक्ट की संख्यात्मक गुण देता है।

लेकिन दस्तावेज़ यह भी कहते हैं कि for ... in किसी ऑब्जेक्ट की संख्यात्मक गुणों पर पुनरावृत्त करता है। हालांकि:

var i = 0; 
    for (var propertyName in window) { 
     i++; 
    } 

177.

की गिनती रिटर्न क्यों इस प्रकार भिन्न है? क्या वे दोनों ही संख्यात्मक गुणों की गिनती वापस नहीं कर रहे हैं? वस्तु की अपनी गणनीय गुण और अपने प्रोटोटाइप की गणनीय गुण (और अपने प्रोटोटाइप, आदि) से अधिक

+6

'for..in' प्रोटोटाइप को भी लूप करता है, 'ऑब्जेक्ट.की' केवल अपनी गुण। – elclanrs

उत्तर

11

for-in छोरों। Object.keys केवल ऑब्जेक्ट के अपने गणितीय गुणों को सूचीबद्ध करता है।

var keys = []; 
var key; 
for (key in object) { 
    if (object.hasOwnProperty(key)) { 
     keys.push(key); 
    } 
} 

नोट hasOwnProperty जांच:

तो Object.keys एक सरणी कुछ इस तरह बनाता है।

संबंधित मुद्दे