मुझे यकीन है कि जावास्क्रिप्ट में प्रोटोटाइप की व्याख्या करने वाले उनके कई संदर्भ और महान उत्तर हैं,

मेरा प्रश्न सरल होता है, जब मैं ऐसा कुछ बनाता हूं।

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}
Person.prototype.nationality = "English";

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

और कंसोल.लॉग माय फादर यह अपना पहला नाम, अंतिम नाम, उम्र, आंखों का रंग प्रदर्शित करता है लेकिन राष्ट्रीयता नहीं लेकिन जब मैं ऐसा कुछ करता हूं ..

myFather.nationality यह "अंग्रेजी" होने के लिए राष्ट्रीयता प्रदर्शित करता है

अब, मैं क्रोम कंसोल लॉग में सब कुछ चला रहा हूं और मेरा सवाल यह है कि myFather ऑब्जेक्ट के console.log में डिफ़ॉल्ट रूप से राष्ट्रीयता क्यों नहीं दिखाई देती है

2
user9504869 28 मार्च 2018, 17:20

2 जवाब

nationality व्यक्ति वस्तु पर सीधे नहीं है - यह प्रोटोटाइप श्रृंखला पर, प्रोटोटाइप पर एक कदम ऊपर है। जब आप इसे console.log करते हैं, तो __proto__ पर क्लिक करें और आप nationality: "English" देखेंगे।

0
CertainPerformance 28 मार्च 2018, 14:22

क्योंकि nationality, Person की "स्वयं की संपत्ति" नहीं है, बल्कि, प्रत्येक इंस्टालेटेड Person वस्तु के लिए इसके प्रोटोटाइप की एक अंतर्निहित संपत्ति है।

यदि आपको किसी विशिष्ट वस्तु के गुणों की जांच करने की आवश्यकता है, तो फ़ंक्शन getPrototypeOf का उपयोग करें।

function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

Person.prototype.nationality = "English";

var myFather = new Person("John", "Doe", 50, "blue");

console.log(Object.getPrototypeOf(myFather))
1
Ele 28 मार्च 2018, 14:24