आप constructor
अवधारणा की तलाश में हैं। , आदेश (कि कहने के लिए है, एक विशेष प्रकार का नई वस्तुओं है कि एक प्रोटोटाइप के वारिस बनाने के लिए,
function make_person(firstname, lastname, age) {
person = {};
person.firstname = firstname;
person.lastname = lastname;
person.age = age;
return person;
}
make_person("Joe", "Smith", 23);
// {firstname: "Joe", lastname: "Smith", age: 23}
हालांकि एक निर्माता है:
जावास्क्रिप्ट are objects में सभी कार्यों और वस्तुओं बनाने के लिए इस्तेमाल किया जा सकता है , आदि), एक समारोह this
संदर्भ और कर सकते हैं अगर यह new
ऑपरेटर साथ कहा जाता है तो यह गुण है कि समारोह में this
पर परिभाषित कर रहे हैं के सभी के साथ एक वस्तु वापस आ जाएगी - ऐसे मामलों में this
का संदर्भ नई वस्तु हम कर रहे हैं बनाना।
function make_person_object(firstname, lastname, age) {
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
// Note, we did not include a return statement
}
मुख्य अंतर यह नोट करने के लिए make_person
और make_person_object
के बीच है कि new make_person()
बुला कुछ अलग काम नहीं चलेगा (के रूप में बस make_person()
के खिलाफ) ... दोनों एक ही वस्तु का उत्पादन करेगा। इसके अलावा
var Joe = make_person_object("Joe", "Smith", 23);
console.log(Joe); // undefined
console.log(window.firstname) // "Joe" (oops)
var John = new make_person_object("John", "Smith", 45);
console.log(John); // {firstname: "John", lastname: "Smith", age: 45}
, के रूप में @RobG बताते हैं: हालांकि new
ऑपरेटर के बिना make_person_object()
कॉलिंग, होगा वर्तमान this
वस्तु पर अपने this
विशेषताएं निर्धारित
इस प्रकार है (यदि आप ब्राउज़र में काम कर रहे हैं आम तौर पर window
।) , चीजों को करने का यह तरीका हमारे द्वारा बनाए गए प्रत्येक "व्यक्ति" पर make_person_object
की prototype
संपत्ति का संदर्भ बनाता है। इस तरीके जोड़ के लिए सक्षम बनाता है और इस तथ्य के बाद लोगों को जिम्मेदार बताते हैं:
// Assuming all that came before
make_person_object.prototype.full_name = "N/A";
make_person_object.prototype.greet = function(){
console.log("Hello! I'm", this.full_name, "Call me", this.firstname);
};
John.full_name // "N/A"
John.full_name = "John Smith";
make_person_object.full_name // Still "N/A"
John.greet(); // "Hello! I'm John Smith Call me John"
कन्वेंशन यह make_person_object
की तरह है कि निर्माता कार्य करता है बड़ा किया जाता है, singularized और "nouned" (एक बेहतर शब्द की कमी के लिए) - इस प्रकार हम हैं के बजाय Person
कन्स्ट्रक्टर है, जो सामान्य कार्य के लिए गलत हो सकता है।
यह भी देखें:
आपने सबसे अधिक आयात हिस्सा छोड़ा: कन्स्ट्रक्टर के 'यह' द्वारा संदर्भित नई वस्तु कन्स्ट्रक्टर के प्रोटोटाइप से गुण प्राप्त करती है। – RobG
@RobG - ठीक है कि मैंने * किया *! मैंने इसका कुछ उदाहरण शामिल करने के लिए उत्तर अपडेट किया है - इसे बेहतर बनाने में मदद के लिए धन्यवाद! –
शानदार जवाब। वास्तव में महान क्या करना है, और फिर मुझे सिखाया कि इसे कैसे समझें। मैंने जो भी सवाल पढ़ा था, उसके बाद निम्नलिखित खंड में उत्तर दिया गया था। धन्यवाद!! – redfox05