2012-02-07 10 views
5

मैं अपने कई बैकबोन में _.bindAll का उपयोग कर रहा हूं। दृश्य।Underscore bindAll, स्पष्ट विधि नामकरण

_.bindAll(this, 'render', 'addOne', 'addAll', 'someFunctionA', 'someFunctionB'); 

हालांकि इस पुनर्रचना काफी थकाऊ हो जाता है के रूप में मैं विचारों के तरीकों और सिंक में नाम लिस्टिंग रखने की जरूरत है। दोनों तरीकों से यह अक्सर सरल त्रुटियों की ओर जाता है।

चूंकि bindAll का एक छोटा संस्करण है, जो इस आवश्यकता को खत्म कर देगा, मैं सोच रहा हूं कि क्या कमी (प्रदर्शन, पठनीयता, लचीलापन, ..) मौजूद है और क्या आप उन्हें उत्पादकता बढ़ाने के लिए स्वीकार्य मानते हैं ।

_.bindAll(this); 

उत्तर

4

बाइंडअल के उस रूप का उपयोग करने के लिए कोई व्यावहारिक प्रदर्शन दंड नहीं है। हालांकि, अगर आप किसी कारण से this तक कोई विधि नहीं चाहते हैं तो यह दर्द होगा।

हालांकि, आपको लगता है कि आपको जितनी बार सोचें उतनी बार bindAll का उपयोग करने की आवश्यकता नहीं है। ईवेंट हैंडलर (ईवेंट हैश के साथ) से जुड़े सभी विधियां स्वचालित रूप से this पर बाध्य होती हैं।

इसके अलावा, जब आप किसी ईवेंट को स्पष्ट रूप से बाध्यकारी करते हैं, तो आप तीसरे पैरा में this बाध्यकारी पास कर सकते हैं। उदाहरण के लिए:

this.model.bind('change', this.render, this)

+0

धन्यवाद (विशेष रूप से काम करता है की एक बहुत कुछ के साथ वस्तुओं के लिए)। मेरा बढ़ता उपयोग एक ऐप-वाइड इवेंट के कारण है, जहां स्वचालित बाध्यकारी जगह नहीं है:/Thx को बाध्य करने के लिए इंगित करने के लिए थैक्स, सीधे जब मैं मॉडल बाध्यकारी घोषित करता हूं (नोट: मुझे लगता है कि इसे पढ़ना चाहिए: 'यह। model.on')। आखिरकार, मैं उत्सुक हूं: परिदृश्य क्या हैं, जहां मैं नहीं चाहता कि मेरे विचार विधियों को स्वयं ही दृश्य में बाध्य किया जाए? – SunnyRed

+2

दाएं, बैकबोन 0.9 अब 0.5 "और पहले के रूप में" बाइंड "के बजाय" चालू "का उपयोग करता है। "दुनिया देखें" में मुझे लगता है कि आप लगभग हमेशा 'यह' दृश्य देखना चाहते हैं। लेकिन यदि आप वास्तव में 'यह' के एक jQuery लक्ष्य के jQuery सम्मेलन से जुड़े हुए हैं तो यह आपके लिए काम नहीं कर सकता है। व्यक्तिगत रूप से, मुझे 'इस' के उपयोग में स्थिरता पसंद है। – maxl0rd

4

I'v थोड़ी देर के लिए रीढ़ की हड्डी परियोजना में _.bindAll(this) इस्तेमाल किया। कोड को प्रोफाइल करने के बाद मुझे एहसास हुआ कि _.bindAll पर कॉल सभी फ़ंक्शन कॉल का उल्लेखनीय हिस्सा लेता है।
प्रदर्शन परीक्षण के परिणामों के आधार http://jsperf.com/underscore-bindall-this-vs-bindall-this-params ऐसा लगता है कि स्पष्ट विधि नामकरण अधिक performant है

संबंधित मुद्दे