सही ढंग से निम्नलिखित कार्यक्रम को देखते हुए, कंसोल लॉग - ध्यान दें श्रृंखलित init
समारोह और return this
:Object.create, चेनिंग और 'इस'
const cat = {
init(sound) {
this.sound = sound;
return this;
},
makeSound() {
console.log(this.sound);
}
};
const fluffy = Object.create(cat).init('meeeaaaauuu');
fluffy.makeSound();
मेरा प्रश्न: कैसे और क्यों है return this
इसके लिए काम करने के लिए आवश्यक है? इसके साथ नीचे त्रुटि देखें हटाया:
const cat = {
init(sound) {
this.sound = sound;
// return this
},
makeSound() {
console.log(this.sound);
}
};
const fluffy = Object.create(cat).init('meeeaaaahuuu');
fluffy.makeSound();
MDN राज्यों Object.create नई वस्तु देता है, तो init() चाहिए काम ... के माध्यम से यह सोच रही थी ... चेनिंग क्या ऐसा इसलिए है क्योंकि नई वस्तु जो जंजीर है अभी भी 'अज्ञात' है?
ध्यान दें कि यदि init()
, अपनी स्वयं की पंक्ति, सभी काम करता है के रूप में मैं उम्मीद करेंगे हो जाता है return this
की जरूरत के बिना:
const fluffy = Object.create(cat);
fluffy.init('meeeaaaahuuu');
fluffy.makeSound();
आपका 'init' विधि कुछ भी नहीं देता है के लिए इस तरह लिखा जा सकता था। तो 'कॉन्स्ट फ्लफी' 'अपरिभाषित 'के बराबर है। इसका ऑब्जेक्ट.क्रेट 'के साथ कुछ लेना देना नहीं है। – zerkms
ओह - तो जब कोई ऐसी विधि को चेन करना जो कुछ भी वापस नहीं करता है, तो मूल वापसी मूल्य (नई बिल्ली वस्तु) खो जाती है? कॉन्स फ्लफी उस ऑब्जेक्ट के साथ नई वस्तु के बराबर नहीं है? – calipoop
"चुंबन" का इलाज कुछ जादुई या विशेष के रूप में न करें। यदि यह संभव था तो मैं कानूनी रूप से "चेनिंग" शब्द का उपयोग करने पर भी प्रतिबंध लगा दूंगा: किसी कारण से लोग किसी विशेष कार्य को उस फ़ंक्शन में डाल देते हैं जो कुछ देता है। – zerkms