येहुदा काट्ज़ में a good writeup जावास्क्रिप्ट की Function#call
विधि है। उनके लेखन को आपके प्रश्न का उत्तर देना चाहिए, और इसके अलावा कई अनुवर्ती प्रश्न भी हैं।
जब आप एक समारोह सीधे कॉल, सामान्य सिंटैक्स का उपयोग:
var foo = function() {
console.log("foo");
return this;
};
foo(); // evaluates to `window`
फिर this
समारोह कॉल के अंदर जो कुछ भी this
समारोह कॉल के बाहर है। डिफ़ॉल्ट रूप से, ब्राउज़र में, this
किसी फ़ंक्शन कॉल के बाहर window
है। तो ऊपर के रूप में फ़ंक्शन कॉल के अंदर, this
डिफ़ॉल्ट रूप से window
भी है।
जब आप एक समारोह विधि-कॉल सिंटैक्स का उपयोग फोन:
var bar = {
foo: function() {
console.log("foo");
return this;
}
};
bar.foo(); // evaluates to `bar`
फिर this
समारोह कॉल के अंदर सबसे दायीं ओर की अवधि के बाईं ओर वस्तु है: इस मामले में, bar
में।
हम call
का उपयोग करके इस स्थिति को अनुकरण कर सकते हैं।
आप एक वस्तु के बाहर एक समारोह की स्थापना की और समारोह कॉल एक वस्तु के लिए सेट के अंदर this
से कॉल करने के लिए चाहते हैं, तो आप कर सकते हैं:
var foo = function() {
console.log("foo");
return this;
}
var bar = { };
foo.call(bar); // evaluates to `bar`
आप इस तकनीक का प्रयोग के रूप में अच्छी बहस पारित करने के लिए कर सकते हैं:
var foo = function(arg1, arg2) {
console.log("foo");
return arg1 + arg2;
}
var bar = { };
foo.call(bar, "abc", "xyz"); // evaluates to `"abcxyz"`
[एमडीएन दस्तावेज़ीकरण कॉल()] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call) – epascarello