JavaScript में कॉल मेथड के माध्यम से कॉन्टेक्स्ट बाइंडिंग
तो, हमने समझ लिया है कि this वास्तव में कैसे काम करता है।
आइए अब उन मेथड्स पर विचार करें जो जबरन यह निर्दिष्ट करने की अनुमति देते हैं
कि एक फ़ंक्शन किस कॉन्टेक्स्ट में कॉल किया गया है (यानी
जबरन यह बताने के लिए कि this किसके बराबर है)।
पहली मेथड जिसे हम देखेंगे,
उसे call कहा जाता है। आइए एक उदाहरण के साथ
इसके काम को देखें। मान लीजिए कि हमारे पास एक इनपुट है:
html<input id="elem" value="text">
आइए इस इनपुट का संदर्भ प्राप्त करें और इसे
एक वेरिएबल elem में लिखें:
javascriptlet elem = document.querySelector('#elem');
आइए अब एक फ़ंक्शन func बनाएं,
जिसके अंदर this.value आउटपुट करें:
javascriptfunction func() {
console.log(this.value);
}
अभी हमारा फ़ंक्शन नहीं जानता कि this
किसको संदर्भित कर रहा है। अगर हम इसे
addEventListener के माध्यम से बांधते, तो हाँ।
लेकिन हम ऐसा नहीं करेंगे। इसके बजाय हम बस
अपने फ़ंक्शन को कॉल करेंगे, यह बताते हुए कि this
elem के बराबर होना चाहिए।
यह इस तरह से किया जाता है: func.call(elem)।
यह कोड सीधे फ़ंक्शन कॉल
func() के समान है, केवल
इस शर्त पर कि this, elem के बराबर है।
तो, कॉल मेथड का सिंटैक्स है: फ़ंक्शन.call(ऑब्जेक्ट)।
आइए सब कुछ
एक साथ रखें:
javascriptlet elem = document.querySelector('#elem');
function func() {
console.log(this.value); // इनपुट का value आउटपुट करेगा
}
func.call(elem);
एक फ़ंक्शन दी गई है:
javascriptfunction func() {
console.log(this.value);
}
तीन इनपुट दिए गए हैं:
html<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
call मेथड और func फ़ंक्शन का उपयोग करके
प्रत्येक इनपुट का value स्क्रीन पर आउटपुट करें।