मैं दस्तावेज में कोई आधिकारिक स्पष्टीकरण खोजने के लिए नहीं कर पाए हैं, लेकिन मैं कुछ परीक्षण है कि गुण धूसर हो के आधार पर कर रहे हैं एक अच्छा अनुमान है उन है कि चूक रहे हैं/जावास्क्रिप्ट इंजन द्वारा निर्धारित और कोड द्वारा ही नहीं। किसी सरणी
var foo = [1,2,3,45,1337];
console.dir(foo);
कंसोल में देता में
length
: कुछ उदाहरण हैं
सूचना है कि सूचकांक धूसर हो जाते हैं नहीं लेकिन length
और सब कुछ __proto__
है में।
कोड प्रोटोटाइप से https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype#Examples
var Person = function() {
this.canTalk = true;
};
Person.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name);
}
};
var Employee = function(name, title) {
Person.call(this);
this.name = name;
this.title = title;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name + ', the ' + this.title);
}
};
var bob = new Employee('Bob', 'Builder');
bob.greet();
console.dir(bob);
कंसोल में देता है:
यहां दिलचस्प बातें की एक बहुत कुछ कर रहे हैं। greet
के सभी उदाहरण भूरे रंग के नहीं हैं। हालांकि हर जगह __proto__
ग्रे हो गया है (शायद क्योंकि यह इंजन द्वारा प्रोटोटाइप पर सेट किया गया है)। Person
से ओवरराइड कन्स्ट्रक्टर भी ग्रे हो गया है, लेकिन Employee
का स्पष्ट रूप से सेट कन्स्ट्रक्टर ग्रे नहीं हुआ है।
तो मुझे लगता है कि यहां एक मोटा पैटर्न है, जो कि क्रोम (ई/आईयूएम) गुणों को समझता है जो आपको लगता है कि आपको इसकी परवाह करने की संभावना कम होगी, या तो क्योंकि उन्हें विरासत में मिला या सेट किया गया था इंजन के निर्माण के रूप में इंजन, लेकिन ऐसा लगता है कि यह सही नहीं है। (लेकिन कौन है, है ना?) कोशिश करने के लिए एक और दिलचस्प बात एफ 12 और console.dir(window)
टाइप करें। वेबसाइट की जावास्क्रिप्ट द्वारा वैश्विक विंडो नेमस्पेस में रखी गई चीजों को छोड़कर आप लगभग सब कुछ भूरे रंग के बाहर देखेंगे।
क्या आपके द्वारा ऑब्जेक्ट का विस्तार करने के बाद उन फीका गुणों के मूल्य हैं, या आपको '(...)' पर क्लिक करने की आवश्यकता है? – apsillers
@apsillers, मेरे उदाहरण में मुझे उन्हें क्लिक करने की आवश्यकता थी। निश्चित रूप से आपके उत्तर में गणना योग्य विशेषता से संबंधित है। धन्यवाद – Ben
मैंने पूछा क्योंकि इटालिक संपत्ति के नाम गेटटर फ़ंक्शन को इंगित करते हैं, लेकिन इटालिक गेटर्स भी '(...)' व्यवहार का कारण बनता है। यदि आपके पास '(...)' के बिना एक इटालिक संपत्ति थी, तो यह असामान्य होगा। आपके पास यह था, हालांकि, यह पूरी तरह से सामान्य है। (मैंने इसके बारे में मेरे जवाब में थोड़ा जोड़ा।) – apsillers