मैं बहुत अजीब कुछ पाया आज के साथ वस्तुओं बनाने:'वापसी' का उपयोग करते हुए जब 'नए'
: यदि आप एक निर्माता समारोह औरnew
कीवर्ड के साथ वस्तुओं बनाते हैं, लेकिन
return
एक निर्माता से समारोह, यह बहुत तरह बर्ताव करता है
- नव निर्मित "ऑब्जेक्ट" इसके बजाय एक फ़ंक्शन है।
- नए कार्य को सामान्य की तरह लागू किया जा सकता है कि, हालांकि ...
- आप निर्माता समारोह में
this
के लिए एक संदर्भ बनाए रखते हैं,this
संदर्भ एक वस्तु है कि सही ढंग से निर्माता से बनाया गया था।new
से आपको वापस आने की उम्मीद है।function Constructor() { var self = this; this.name = 'instance'; return function() { return self; } }
तो अगर आप इसे इस तरह instantiated:
var instance = new Constructor()
निम्नलिखित परिणाम होगा:typeof instance //returns "function" typeof instance() //returns "object" instance() //returns { name: 'instance' }
तो मुझे लगता है कि मैं तीन प्रश्न हैं:
यहाँ एक उदाहरण है
- क्या यह कानूनी है और यह बदतर है के क्रॉस ब्राउज़र? यह वास्तव में कमाल है और मुझे लगता है कि इसका उपयोग कई तरीकों से किया जा सकता है, लेकिन क्या यह व्यवहार भरोसेमंद है?
- पृष्ठभूमि में क्या होता है जो इस व्यवहार का कारण बनता है?
- (शायद 2 द्वारा उत्तर दिया गया है, लेकिन ...) क्या नया ऑब्जेक्ट (जिसे 'इस' के साथ संदर्भित किया गया है) नए उदाहरण के अंदर है, ताकि यह सब स्वयं निहित हो और कचरा कलेक्टर द्वारा ठीक से साफ किया जा सके?
कन्स्ट्रक्टर से कुछ भी वापस लौटना गलत है, मैंने सुना है। –