निश्चित रूप से कोई अंतर है। यदि आप this.AlertA
को परिभाषित करते हैं, तो आप ObjA
के उदाहरण के लिए स्थानीय विधि को परिभाषित कर रहे हैं। यदि आप ObjA
कन्स्ट्रक्टर के प्रोटोटाइप में AlertA
जोड़ते हैं, तो यह ObjA
के प्रत्येक इंस्टेंस के लिए परिभाषित किया गया है। उत्तरार्द्ध, इस मामले में, अधिक कुशल है, क्योंकि यह केवल एक बार असाइन किया जाता है, जबकि प्रत्येक बार जब आप ObjA
का उदाहरण बनाते हैं तो एक स्थानीय विधि असाइन की जाती है। विधि AlertA
जोड़ने के लिए निर्माता
var A = new ObjA,
B = new ObjA,
C = new ObjA;
ए, बी और सी के लिए
गया है:
तो में this.AlertA
का उपयोग कर। दूसरी तरफ AlertB
, केवल एक बार जोड़ा जाता है। आप देख सकते हैं कि का उपयोग करते हुए:
function ObjA() {
alert('adding AlertA!');
this.AlertA = function() {
alert("A");
};
if (!ObjA.prototype.AlertB) {
alert('adding AlertB!');
ObjA.prototype.AlertB = function() {
alert("B");
};
}
}
var A = new ObjA, //=> alerts adding AlertA! and alerts adding AlertB!
B = new ObjA, //=> alerts adding AlertA!
C = new ObjA; //=> alerts adding AlertA!
संभावित डुप्लिकेट: http://stackoverflow.com/questions/422476/javascript-setting-methods-through-prototype-object-or-in-constructor-differenc –
वास्तव में डुप्लिकेट, धन्यवाद। –
संभावित डुप्लिकेट [जावास्क्रिप्ट में 'प्रोटोटाइप' बनाम 'यह' का उपयोग?] (Http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript) – user2864740