2013-07-22 5 views
6

जहां तक ​​मुझे पता है कि एक चर के लिए this असाइन करने के लिए कॉलबैक के भीतर उपयोग किया जाता है जहां this गुंजाइश बदल सकती है। लेकिन एक्स्टजेस स्रोत के माध्यम से खोदने के बाद मैंने पाया कि यह सभी प्रकार के कार्यों में उपयोग किया जाता है लेकिन हमेशा नहीं। तो क्या कोई कारण है कि मैं this को दायरे के नीचे एक स्थानीय चर के लिए असाइन करूंगा या क्या एक्स्टजेस स्रोत सिर्फ विभिन्न डेवलपर शैलियों के साथ संघर्ष कर रहा है?कॉलबैक के बिना लोकेल वैरिएबल को असाइन करने का कारण क्या है?

उत्तर

2

इसके लिए कुछ कारण हैं, स्थानीय चर का उपयोग करने से सबसे महत्वपूर्ण यह है कि फाइलों के संपीड़न के दौरान कुछ बाइट्स बचाए जाएंगे। यह कोड के एक छोटे से बिट के लिए उतना प्रतीत नहीं हो सकता है, लेकिन यह समय के साथ एक अच्छा सा जोड़ सकता है।

इस मुद्दे के बारे में बात करते हुए सेन्चा मंचों पर एक लंबा धागा है: http://www.sencha.com/forum/showthread.php?132045

+0

धन्यवाद, आपने मुझे सही दिशा में स्वीकृत और +1 की ओर इशारा किया। वैसे भी मुझे एक और जटिल जवाब लिखने लगा और इसे अपने स्वयं के प्रश्न में जोड़ा। – JJR

0

जैसा कि आपने सही ढंग से कहा है this कभी-कभी उन स्थानों पर उपयोग किया जाता है जहां दायरा बदल सकता है।

ऐसे मामले हैं जहां आप यह सुनिश्चित करने के लिए ऐसा करना चाहते हैं कि कोई स्कोपिंग समस्या न हो।

इसके अलावा, देव कभी-कभी केवल this को आवश्यकता से अधिक आदत से बाहर एक चर के लिए असाइन करते हैं।

3

@kevhender ने मुझे सही sencha forum thread पर इंगित किया जहां ईवन ने बहुत अच्छी व्याख्या दी है।

यह केवल आकार के लिए है। और यहाँ एक उदाहरण है:

function doA() { 
    var me = this; 

    me.a(); 
    me.b(); 
    me.c(); 
    me.d(); 
    me.e(); 
    me.f(); 
    me.g(); 
    me.h(); 
    me.i(); 
    me.j(); 
    me.k(); 
    me.l(); 
} 

function doB() { 
    this.a(); 
    this.b(); 
    this.c(); 
    this.d(); 
    this.e(); 
    this.f(); 
    this.g(); 
    this.h(); 
    this.i(); 
    this.j(); 
    this.k(); 
    this.l(); 
} 

संपीडित हम पाते हैं:

function doA(){var a=this;a.a();a.b();a.c();a.d();a.e();a.f();a.g();a.h();a.i();a.j();a.k();a.l()} 
function doB(){this.a();this.b();this.c();this.d();this.e();this.f();this.g();this.h();this.i();this.j();this.k();this.l()}; 

यह कहते हैं।


कि के अनुसार हम चाहिए

  • नहीं एक स्थानीय वर का उपयोग करता है, तो हम केवल तीन बार

    function doA(){var a=this;a.a();a.b();a.c();}; 
    function doB(){this.a();this.b();this.c();}; 
    
  • अप करने के लिए इस का उपयोग करें और इसका इस्तेमाल करते हैं, तो हम इसका अधिक बार उपयोग करें, फिर तीन बार

    function doA(){var a=this;a.a();a.b();a.c();a.d()}; 
    function doB(){this.a();this.b();this.c();this.d()}; 
    
संबंधित मुद्दे

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