2012-08-17 9 views
7

मैं ऐसा करते हैं तो:होगा ओनप्रॉपर्टी कभी भी अंदर से ... के अंदर से झूठी वापसी करेगा?

for (var i in obj) { 
    if (obj.hasOwnProperty(i)) console.log("Has property: " + i); 
    else console.log("Doesn't have property: " + i); 
} 

obj.hasOwnProperty(i) कभी false वापसी होगी? अगर ऐसा हैं तोह कब?

+0

केवल hasOwnProperty ("गैर मौजूदा") अवास्तविक लौटाते हैं:

यहाँ एक परीक्षण का मामला है कि दिखाता है कि है। – Shreedhar

+0

जब संपत्ति समृद्ध है, लेकिन इसके बजाय "स्वयं" और विरासत में नहीं है। –

उत्तर

3

एक लूप के भीतर hasOwnProperty का उपयोग करने का विचार विरासत गुणों पर लूपिंग के दौरान झूठ को हल करना है। यह डगलस क्रॉकफोर्ड को "गहरी ड्रेज" के रूप में संदर्भित करता है।

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty से

उदाहरण: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty से

var buz = { 
    fog: 'stack' 
}; 

for (var name in buz) { 
    if (buz.hasOwnProperty(name)) { 
    alert("this is fog (" + name + ") for sure. Value: " + buz[name]); 
    } 
    else { 
    alert(name); // toString or something else 
    } 
} 
+0

क्या आप इसे दे सकते हैं और इसका उदाहरण दे सकते हैं? मुझे यकीन नहीं है कि जावास्क्रिप्ट में विरासत वाली संपत्ति क्या है। – Juan

+0

निश्चित रूप से, https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty –

+2

देखें एक और उदाहरण: http://jsfiddle.net/PNmMq/ – PPvG

1

उदाहरण - प्रदर्शित नहीं करता है जब hasOwnProperty झूठे लौट सकते हैं।

// From some library or earlier in your code 
Object.prototype.xxx = "xxx"; 

// Your object 
var data = { member: "member" }; 

for (var key in data) { 
    if(data.hasOwnProperty(key)) { 
     alert(key); // alert("member") 
    } 
    else { 
     alert(key); // alert("xxx") 
    } 
} 
संबंधित मुद्दे