2009-06-26 17 views
24
var UI$Contract$ddlForm_change = function() { 

    //'this' is currently the drop down that fires the event 
    // My question is can I change the context so "this" represents another object? 
    this = SomeObject; 

    // then call methods on the new "this" 
    this.someMethod(someParam); 
}; 

क्या यह संभव है? धन्यवाद, ~ सैन डिएगो में सीकेक्या मैं जावास्क्रिप्ट का संदर्भ बदल सकता हूं "यह"?

+0

इस प्रश्न का उत्तर देखें: http://stackoverflow.com/questions/456967/javascript-how-to-set-this-variable-easily – molf

+2

yepp, http: // stackoverflow का डुप्लिकेट अधिक या कम। कॉम/प्रश्न/456967/जावास्क्रिप्ट-कैसे-सेट-सेट-यह-वेरिएबल-आसानी से स्वीकृत उत्तर कॉल()/लागू() का उपयोग करना था, https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference देखें/Global_Objects/फ़ंक्शन/लागू – VolkerK

+0

यह केवल भ्रमित करने वाला है। सभी उत्तर नहीं कहते हैं, आप इसे नहीं कर सकते हैं। जाहिर है, डुप्लिकेट प्रश्न के उत्तर हाँ के जवाब, आप इसे कर सकते हैं। जाओ पता लगाओ। – DOK

उत्तर

39

नहीं, यह संभव नहीं है।

आप इस (method.apply()/method.call() का प्रयोग करके) के लिए एक निर्धारित मूल्य के साथ एक विधि कॉल कर सकते हैं, लेकिन आप नहीं कीवर्ड, this पुन: असाइन कर सकते हैं।

+0

[joshuakehn.com] पर अधिक जानकारी (http://joshuakehn.com/2011/10/20/Understanding-JavaScript-Context.html) – vdubus

+0

आप कॉल में फ़ंक्शन के लिए तर्क के रूप में 'this' को भी पास कर सकते हैं 'यूआई $ अनुबंध $ ddlForm_change', तो आप उस तर्क का संदर्भ/गुणों के रूप में उपयोग कर सकते हैं –

7

जे-पी सही है। यह नहीं हो सकता। जावास्क्रिप्ट भाषा विनिर्देश दस्तावेज़ ECMA-262 का संदर्भ लें। आप यहाँ से डाउनलोड कर सकते हैं मानक:

http://www.ecma-international.org/publications/standards/Ecma-262.htm

फ़ाइल ECMA-262.pdf और पेज 39 पर, खंड 10.1.7 है।

10.1.7 यह

एक इस हर सक्रिय निष्पादन संदर्भ के साथ जुड़े मूल्य नहीं है। यह मान कॉलर पर निर्भर करता है और कोड के प्रकार को निष्पादित किया जा रहा है और है जब नियंत्रण निष्पादन संदर्भ में प्रवेश करता है। निष्पादन संदर्भ से जुड़ा यह मान अपरिवर्तनीय है।

नोट "अपरिवर्तनीय" है। यानी बदला नहीं जा सकता है।

9

आप से फ़ंक्शन के अंदर संदर्भित नहीं कर सकते हैं।

हालांकि, आप कर सकते हैं कॉल एक विशिष्ट संदर्भ में एक समारोह - ताकि this एक विशिष्ट वस्तु को संदर्भित करता है - call या apply का उपयोग करके।

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