मैं कई स्थानों में पैटर्न की इस तरह है कि कुछ कोड का सामना करना पड़ा:इसका उद्देश्य क्या है। SomFunction.call (यह, param);
this.someFunction.call(this, param);
लेकिन यह मेरे लिए
this.someFunction(param)
टाइपिंग की सिर्फ एक अधिक वर्बोज़ रास्ता पैटर्न कभी कभी अंदर प्रकट होता है लगता है एक समारोह जो कॉलबैक के रूप में प्रदान किया जाता है। यह प्रासंगिक होने पर बैकबोन का उपयोग होता है। कुछ इस तरह:
Backbone.View.extend({
// other stuff ...
someFunction: function(param) {
// ...
},
anotherFunction: function() {
this.collection.on("some_event", function() {
this.someFunction.call(this, param);
});
}
});
पैटर्न वास्तव में ऐसा प्रभाव है कि this.someFunction(param)
के बराबर नहीं है या किसी को सिर्फ बंद सही this
कब्जा नहीं के बारे में नर्वस थे है?
किसी भी अंतर्दृष्टि के लिए धन्यवाद!
* "या कोई व्यक्ति बंद होने के बारे में सिर्फ घबरा गया था, यह सही 'कैप्चर नहीं कर रहा है' *' यह 'कार्यों के अंदर एक विशेष मूल्य है और गुंजाइश से प्रभावित नहीं है। (अपवाद: ES6 तीर फ़ंक्शन)। मुझे सामान्य फ़ंक्शन कॉल पर '.call' को प्राथमिकता देने के लिए यहां कोई कारण नहीं दिख रहा है। –
दोनों शायद कुछ प्रकार के कोडिंग सम्मेलन के बराबर हैं। लिपियों को भी अक्सर obfuscated हैं। – kidwon
ध्यान दें कि कॉल() का उपयोग करके कुछ ओवरहेड जोड़ता है और निष्पादन धीमा कर देता है, जो विशेष रूप से लूप में स्पष्ट होता है। कोड वास्तव में 'this.collection.on (" some_event ", this.someFunction.bind (यह, param)) के रूप में लिखा जा सकता है; 'जो समय से पहले _this_ लॉक करता है, जो कॉल() से तेज़ हो सकता है। हालांकि, बैकबोन _this_ का उपयोग करने के तरीके के आधार पर, आपको उस समय सही _this_ रखने के लिए किसी अन्य फ़ंक्शन() में बाध्य मान को डुप्लिकेट करने की आवश्यकता हो सकती है। – dandavis