चलो दो उदाहरण देखें जिसमें मैं समझाने की कोशिश करूंगा कि मैं क्या समझना चाहता हूं।जेएस क्लास बनाएं: आईआईएफई बनाम रिटर्न प्रोटोटाइप
var Car = function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car.prototype; // return with prototype
};
var myCar = new Car();
और:
var Car = (function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car; // avoid prototype adding parentheses on next line;
})();
var myCar = new Car();
चलो देखते हैं !, दोनों वर्ग समारोह अभिव्यक्ति के रूप में बनाई गई हैं और दोनों समान रूप से काम करते हैं। उनके बीच एकमात्र अंतर हैं: पहली बार अपनी प्रोटोटाइप संपत्ति के साथ कार फ़ंक्शन लौटाता है। कार फ़ंक्शन लौटने वाले दूसरे काम, प्रोटोटाइप संपत्ति से परहेज करते हैं और इसके बजाय आईआईएफई का उपयोग करते हैं।
return Car.prototype;
के बीच अंतर क्या है और IIFE से बचें और IIFE (कक्षा घोषणा के अंत में कोष्ठक) का उपयोग करके return Car;
का उपयोग करें।
वास्तव में क्या आप प्राप्त करने की कोशिश कर रहे हैं? – alex
मैं इस सिद्धांत को समझने की कोशिश कर रहा हूं कि यह गहराई से कैसे काम करता है, और तकनीकी मतभेद क्या हैं। –
क्या आप 'नए' ऑपरेटर का उपयोग करने के लिए 'कार' ऑब्जेक्ट्स दोनों के साथ वापस आना चाहते हैं? – alex