मैंने इसमें गहराई से देखा और टाइपस्क्रिप्ट प्लेग्राउंड के साथ खेला। मैंने दो वर्गों को गेटटर के साथ घोषित किया और दूसरा आपके प्रश्नों में वर्णित विधि प्राप्त करने के साथ।
पहले उदाहरण में हम निम्नलिखित तरीके से संपत्ति के मूल्य प्राप्त करने के लिए एक विधि की घोषणा की::
देखें कि यह कैसे लगता है कि चलो
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
getGreeting() {
return this.greeting;
}
}
कौन सा जावास्क्रिप्ट यह कैसा दिखता करने के लिए अनुवाद के बाद:
var Greeter = (function() {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.getGreeting = function() {
return this.greeting;
};
return Greeter;
}());
और दूसरा उदाहरण है, जहां हम निम्नलिखित तरीके से एक गेटर घोषित के बारे में:
0,123,
class GetterGreeter {
_greeting: string;
constructor(message: string) {
this._greeting = message;
}
get greeting() {
return this._greeting;
}
}
कौन सा अनुवाद के बाद लगता है कि: (अपना पहला उदाहरण के रूप में)
var GetterGreeter = (function() {
function GetterGreeter(message) {
this._greeting = message;
}
Object.defineProperty(GetterGreeter.prototype, "greeting", {
get: function() {
return this._greeting;
},
enumerable: true,
configurable: true
});
return GetterGreeter;
}());
(आप घोषणा और जावास्क्रिप्ट here के अनुवाद के साथ खेल सकते हैं) आप प्राप्त विधि के साथ देख सकते हैं प्रोटोटाइप पर विधि घोषित की गई है और गेटर पैटर्न टाइपस्क्रिप्ट का उपयोग करके आपके दूसरे उदाहरण में DefineProperty api का उपयोग करता है।
दोनों मामलों में हम एक विधि का आह्वान कर रहे हैं और कोणीय परिवर्तनों की पहचान करने और पुनः प्रस्तुत करने के लिए अपने परिवर्तन का पता लगाने के दौरान एक विधि भी कॉल करेंगे।
जैसा कि मैंने देखा है यह एक ही दृष्टिकोण के लिए केवल एक वाक्य रचनात्मक चीनी है और मुझे किसी एक तरीके के लिए कोई प्रदर्शन लाभ नहीं दिख रहा है।
मुझे लगता है कि यह एक ही चीज़ के लिए सिर्फ एक वाक्य रचनात्मक चीनी है। क्या आप कहीं कहीं देख रहे थे कि उनमें से किसी एक का उपयोग करके कोई फायदा है? – galvan
नहीं, यह मेरा सवाल है, मैं समझने की कोशिश कर रहा हूं कि कोई अलग है या नहीं। – ng2user