मैं अपने कस्टम स्कोप के साथ window.setTimeot
फ़ंक्शन का आह्वान करना चाहता हूं, इसलिए मैं call
विधि का उपयोग करता हूं, लेकिन कुछ गड़बड़ है।जावास्क्रिप्ट सेटटाइमआउट कॉल त्रुटि
function foo() {
this.bar = function() {
console.log("keep going");
window.setTimeout.call(this,this.bar,100);
}
this.bar();
}
new foo;
फ़ायरफ़ॉक्स के तहत इस कंसोल केवल 1 लाइन और फिर कुछ भी नहीं करने के लिए प्रिंट, और गूगल के तहत क्रोम यह एक TypeError
फेंकता है।
मेरे कोड में समस्या क्या है?
धन्यवाद, मुझे पता है कि इस तरह से काम करता है, मैं 'कॉल' का उपयोग करने की कोशिश कर रहा हूं। –
@ सम्मोहन: आप इस उद्देश्य के लिए 'कॉल' का उपयोग नहीं कर सकते हैं। जो आप खोज रहे हैं वह है ['bind'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind), जो कि नई ईसीएमएस्क्रिप्ट 5 spec का हिस्सा है। इसका उपयोग करके, आप ऐसा कुछ कर सकते हैं: 'window.setTimeout (this.bar.bind (this), 100)'। – casablanca
सही समझ में आता है। मैंने वही गलती की, 'सेटटाइमआउट' पर 'कॉल' का उपयोग करने का कोई मतलब नहीं है क्योंकि आप 'setTimeout' के 'इस' को बदलने की कोशिश नहीं कर रहे हैं, बल्कि, आप जिस फ़ंक्शन को तर्क के रूप में पारित कर रहे हैं। चियर्स – chiliNUT