2012-03-20 14 views
6

में कीवर्ड "यह" का अर्थ मैं "यह" कीवर्ड का उपयोग करने के अंतर को समझने की कोशिश कर रहा हूं या इसके बजाय यह jQuery Vs में बैकबोन जैसे एमवीसी फ्रेमवर्क का प्रतिनिधित्व करता है।jQuery बनाम एमवीसी

नीचे प्रत्येक के 2 कोड नमूने हैं; तो jQuery में, हम

$("#result").click(function(){ 
$(this).html(someval); 
}) 

रीढ़ में, हम के रूप में कोड है है;

var HandlebarsView = Backbone.View.extend({ 
el: '#result' 
initialize: function(){ 
this.template = Handlebars.compile($('#template').html());  
}, 
render: function(){ 
var html = this.template(this.model.toJSON()); 
this.$el.html(html); 
} 
}); 

अब मुझे समझ में आता है कि "यह" jQuery में DOM तत्व को संदर्भित करता है।

मैं समझना चाहता था कि यह बैकबोन कोड के मामले में क्या दर्शाता है।

कृपया मुझे बताएं।

+0

'यह' 'हैंडलबार्स व्यू' के उदाहरण को संदर्भित करता है। 'this.model',' this.template' और 'this। $ el' 'हैंडलबार्स व्यू' व्यू के सदस्य हैं, आप अधिक विस्तार के लिए दस्तावेज़ को देख सकते हैं http://backbonejs.org/#View – dhaval

+0

यह जानने के लिए कि क्या कुछ है, आप 'console.log (यह) करते हैं;' या 'console.dir (यह);'। इससे आपकी मदद करनी चाहिए। –

+1

_ "अब मैं समझता हूं कि" यह "jQuery में DOM तत्व को संदर्भित करता है।" _ - जब यह नहीं होता है ... – nnnnnn

उत्तर

3

this वह संदर्भ है जिसमें एक फ़ंक्शन निष्पादित होता है।

this को समझने की चाल यह समझ रही है कि यह एक ऐसा फ़ंक्शन निष्पादित करने का तरीका है जो इसे निर्धारित करता है।

जब आप jQuery जैसे किसी विधि को फ़ंक्शन पास करते हैं, तो आप उस फ़ंक्शन को कॉलबैक विधि के रूप में उपयोग कर रहे हैं। jQuery निष्पादित होने पर कॉलबैक के संदर्भ को स्पष्ट रूप से सेट करता है।

जब आप डॉट-नोटेशन का उपयोग कर किसी ऑब्जेक्ट पर कोई विधि कॉल करते हैं: myView.render() यह डॉट-नोटेशन है जो स्पष्ट रूप से डॉट के सामने ऑब्जेक्ट पर विधि कॉल के संदर्भ को सेट करता है।

जावास्क्रिप्ट में एक संदर्भ सेट करने के लिए नियम बहुत सरल हैं, लेकिन बहुत भ्रम पैदा कर सकते हैं। अधिकांश भाषाओं में स्वयं-संदर्भ संदर्भ चर को ऑब्जेक्ट में सेट किया गया है जिसमें विधि परिभाषित की गई थी। जावास्क्रिप्ट, संदर्भ को निर्धारित करने के लिए विधि आमंत्रण पैटर्न का उपयोग करता है।

जब हम कॉलबैक विधि के रूप में किसी ऑब्जेक्ट की विधि को पास करते हैं, तो कोड जो इसे कॉल करता है, विधि के संदर्भ को सेट करता है - इसमें बैकबोन के विचार और अन्य ऑब्जेक्ट शामिल हैं। आप Underscore.js 'bind और bindAll फ़ंक्शंस (http://documentcloud.github.com/underscore/#bind), साथ ही साथ कुछ अन्य चालों का उपयोग कर इसे ओवरराइड कर सकते हैं।


Backbone.View.extend({ 
    initialize: function(){ 
    _.bindAll(this); 
    } 
}); 

इस कोड, उदाहरण के लिए, सभी कार्यों के संदर्भ वर्तमान दृश्य वस्तु पर, देखने के लिए बाध्य होगा। यह गारंटी देता है कि आपके दृश्य विधियों का संदर्भ हमेशा दृश्य ही होगा।

अधिक जानकारी के लिए देखें:

1

बैकबोन में 'यह' दृश्य के अंदर वर्तमान दृश्य वस्तु को संदर्भित करता है। मॉडलों में 'यह' वर्तमान मॉडल ऑब्जेक्ट को संदर्भित करता है। और इसी तरह संग्रह के लिए 'यह' वर्तमान संग्रह वस्तु को संदर्भित करता है।

लेकिन विचारों के लिए 'यह' jQuery द्वारा चयनित डोम तत्व के बीच क्षणिक है और ऑब्जेक्ट को देखते हैं, यही कारण है कि हम _.bindAll फ़ंक्शन का उपयोग करते हैं ताकि हम सुनिश्चित कर सकें कि 'यह' वर्तमान दृश्य ऑब्जेक्ट बनी हुई है जब हम कॉल कर रहे हैं 'रेंडर' जैसे कुछ फ़ंक्शंस, आदि देखें http://documentcloud.github.com/underscore/#bindAll

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