मैं माइक्रोसॉफ्ट से TypeScript नामक नई जावास्क्रिप्ट जैसी भाषा के बारे में पढ़ रहा था। playground (example section) में, टाइपस्क्रिप्ट सिंटैक्स में जावास्क्रिप्ट कोड में परिवर्तित एक साधारण वर्ग है। जावा प्रोग्रामिंग पृष्ठभूमि से आ रहा है, यह जानने के लिए दिलचस्प था कि टाइपस्क्रिप्ट से संकलित के रूप में जावास्क्रिप्ट में ओओपी कैसे किया जाता है।एक अज्ञात फ़ंक्शन() कॉल में जावास्क्रिप्ट क्लास को एम्बेड क्यों करें?
टाइपप्रति कोड:
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter = new Greeter("world");
var button = document.createElement('button')
button.innerText = "Say Hello"
button.onclick = function() {
alert(greeter.greet())
}
document.body.appendChild(button)
और बराबर जावा स्क्रिप्ट कोड:
var Greeter = (function() {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
return Greeter;
})();
var greeter = new Greeter("world");
var button = document.createElement('button');
button.innerText = "Say Hello";
button.onclick = function() {
alert(greeter.greet());
};
document.body.appendChild(button);
टाइपप्रति हिस्सा बहुत जावा के समान तो मुझे लगा कि समझते हैं। अब मेरा सवाल है कि जावास्क्रिप्ट में Greeter
वर्ग का शरीर अज्ञात function()
कॉल में एम्बेड किया गया है?
ऐसा क्यों नहीं लिखते?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
प्रत्येक विधि का लाभ/नुकसान क्या है?
कि जावास्क्रिप्ट कोड तुरंत लागू किए गए अज्ञात फ़ंक्शन का कोई विशेष उपयोग नहीं करता है। आप सही हैं, इसे हटाया जा सकता है। –
मैंने सोचा कि यह 'निजी' सदस्यों के लिए होगा, लेकिन ... 'निजी' जोड़ना कुछ भी नहीं बदलेगा। इस मामले में –