दरअसल, जावास्क्रिप्ट में ऑब्जेक्ट बनाने के कई तरीके हैं। जब आप बस एक ऑब्जेक्ट बनाना चाहते हैं तो " नए " ऑपरेटर का उपयोग करके " कंस्ट्रक्टर-आधारित " ऑब्जेक्ट बनाने का कोई लाभ नहीं है । यह " ऑब्जेक्ट शाब्दिक " सिंटैक्स का उपयोग करके ऑब्जेक्ट बनाने के समान है । लेकिन " नए " ऑपरेटर के साथ बनाई गई " कंस्ट्रक्टर-आधारित " वस्तुएं अविश्वसनीय उपयोग के लिए आती हैं जब आप " प्रोटोटाइप विरासत " के बारे में सोच रहे होते हैं । आप शाब्दिक वाक्य रचना के साथ बनाई गई वस्तुओं के साथ विरासत श्रृंखला को बनाए नहीं रख सकते। लेकिन आप एक कंस्ट्रक्टर फ़ंक्शन बना सकते हैं , इसके प्रोटोटाइप में गुण और तरीके संलग्न कर सकते हैं ।"ऑपरेटर, यह एक ऐसी वस्तु लौटाएगा जिसकी सभी विधियाँ और गुणों की पहुँच उस निर्माण कार्य के प्रोटोटाइप के साथ होगी।
निर्माण कार्य का उपयोग करके ऑब्जेक्ट बनाने का एक उदाहरण यहां दिया गया है (तल पर कोड स्पष्टीकरण देखें):
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Person.prototype.fullname = function() {
console.log(this.firstname + ' ' + this.lastname);
}
var zubaer = new Person('Zubaer', 'Ahammed');
var john = new Person('John', 'Doe');
zubaer.fullname();
john.fullname();
अब, आप कई वस्तुओं को बना सकते हैं, जैसा कि आप व्यक्तिगत निर्माण कार्य को तत्काल करके चाहते हैं और उन सभी को इसमें से पूरा नाम () प्राप्त होगा।
नोट: " यह " कीवर्ड एक कंस्ट्रक्टर फ़ंक्शन के भीतर एक खाली ऑब्जेक्ट को संदर्भित करेगा और जब भी आप " नए " ऑपरेटर का उपयोग करके व्यक्ति से एक नई ऑब्जेक्ट बनाते हैं, तो यह स्वचालित रूप से " इस " कीवर्ड के साथ जुड़े सभी गुणों और विधियों से युक्त ऑब्जेक्ट वापस कर देगा । और ये वस्तु सुनिश्चित करने के लिए होगी कि व्यक्ति निर्माण कार्य के प्रोटोटाइप (जो इस दृष्टिकोण का मुख्य लाभ है) के साथ जुड़े हुए तरीके और गुण हैं ।
वैसे, यदि आप " ऑब्जेक्ट शाब्दिक " सिंटैक्स के साथ समान कार्यक्षमता प्राप्त करना चाहते थे, तो आपको नीचे दिए गए सभी ऑब्जेक्ट्स पर fullname () बनाना होगा:
var zubaer = {
firstname: 'Zubaer',
lastname: 'Ahammed',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
var john= {
firstname: 'John',
lastname: 'Doe',
fullname: function() {
console.log(this.firstname + ' ' + this.lastname);
}
};
zubaer.fullname();
john.fullname();
अंत में, यदि आप अब पूछते हैं कि मुझे ऑब्जेक्ट शाब्दिक दृष्टिकोण के बजाय निर्माण फ़ंक्शन दृष्टिकोण का उपयोग क्यों करना चाहिए :
*** प्रोटोटाइप की विरासत विरासत की एक सरल श्रृंखला की अनुमति देती है जो बेहद उपयोगी और शक्तिशाली हो सकती है।
*** यह कंस्ट्रक्टर फ़ंक्शन प्रोटोटाइप में परिभाषित सामान्य तरीकों और गुणों को विरासत में प्राप्त करता है। अन्यथा, आपको उन्हें सभी वस्तुओं में बार-बार कॉपी करना होगा।
मुझे लगता है कि इसका मतलब बनता है।
a = new Object
,a = new Object()
,a = {}
, शाब्दिक बहुत सरल है और थोड़ी देर पहले का कहना है कि यह तेजी से, नए compilers मेरे बयान गलत का कारण हो सकता है कुछ परीक्षण मैं एक भाग गया। वही शाब्दिक सरणियों पर लागू होता है