javascript - जावास्क्रिप्ट "मुझे"="यह", क्यों?




extjs (3)

मैंने कई स्रोत कोडों में देखा:

var me = this;

खासकर एक्सटी-जेएस 4 (जेएस फ्रेमवर्क) में। ऐसी चीज क्यों कर रही है? क्या कोई अन्य कारण है या आप सिर्फ एक चर के लिए "यह" के बजाय "मुझे" कहलाते हैं?

धन्यवाद।


असल में यह जावास्क्रिप्ट में बंद करने का उपयोग करता है। इसे बंद करने के बारे में पढ़ें।

इसका उपयोग इस विशेष घटना को फ़ंक्शन कॉल करने के लिए किया जाता है जहां इसका एक अलग अर्थ होता है।


आम तौर पर आप this के लिए एक दायरे के अंदर एक संदर्भ रख सकते हैं जिसमें this किसी और चीज को संदर्भित करता है (उदाहरण के लिए कॉलबैक फ़ंक्शन की तरह)।

इस उदाहरण पर विचार करें, जिसमें क्लिक इवेंट हैंडलर फ़ंक्शन का एक अलग संदर्भ है जो आप उम्मीद कर सकते हैं ( this MyClass उदाहरण को संदर्भित नहीं करता है):

var MyClass = function (elem) {
    this.elem = elem;
    this.name = "James";
    elem.addEventListener("click", function () {
        alert(this.name); //oops
    }, false);
};

अब इस उदाहरण पर विचार करें, जिसमें हम कन्स्ट्रक्टर फ़ंक्शन के अंदर इसके मान के संदर्भ को संग्रहीत करते हैं, और कॉलबैक फ़ंक्शन के अंदर इसका उपयोग करते हैं:

var MyClass = function (elem) {
    var me = this;
    this.elem = elem;
    this.name = "James";
    elem.addEventListener("click", function () {
        alert(me.name); //works!
    }, false);
};

कॉलबैक फ़ंक्शन उस चर को संदर्भित कर सकता है जिसे बाहरी फ़ंक्शन में घोषित किया गया था, उसके बाद भी उस फ़ंक्शन को वापस कर दिया गया है ( MyClass कन्स्ट्रक्टर जैसे ही इसे addEventListener निष्पादित किया जाता है)। यह एक बंद करने का प्रदर्शन है।


me=this सेट me=this आपको this चर का उपयोग किसी बाहरी दायरे से बाहरी दायरे में करने की अनुमति देता है।

var Outer= function () {
        var me = this;
        me.x = "outerx";
        me.inner = {
            x: "innerx",
            displayValues: function () {
                console.log(me.x); //outerx
                console.log(this.x); //innerx
            }
        };
    };

    new Outer().inner.displayValues();





extjs