window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', /* how to refer to this function? */);
}, false);
उत्तर
नाम अपने कार्य करते हैं।
function f(e) {
MyClass.shutdown();
window.removeEventListener('unload', f);
}
window.addEventListener('unload', f, false);
संपादित मुझे लगता है कि यह भी काम करेगा। अच्छा बिंदु कोबी!
window.addEventListener('unload', function f(e)
{
MyClass.shutdown();
window.removeEventListener('unload', f);
}, false);
अच्छी तरह से मैं उस बारे में जानता हूं, लेकिन मैं अज्ञात फ़ंक्शन को नाम से बदलना नहीं चाहता ... मुझे अब जिस तरह से पसंद है। – Pablo
@ माइकल - फ़ंक्शन को बंद करने के भीतर स्थानीय रूप से नामित किया जा सकता है। यह एक छोटा सा बदलाव है। – Kobi
@ माइकल: आपके फ़ंक्शन का नामकरण * अब तक * इसे कॉल करने की अनुमति देने का सबसे अच्छा तरीका है। 'Arguments.callee' का उपयोग करना अधिकांश मौजूदा कार्यान्वयन (2x और 10x के बीच - हां, वास्तव में) पर नाटकीय रूप से धीमा है, और ईसीएमएस्क्रिप्ट के नए "सख्त मोड" के साथ काम नहीं करेगा (जिसे आप ढूंढ सकते हैं कि आप इसका उपयोग शुरू करना चाहते हैं एक समय पर)। अब, प्रदर्शन पहलू 'ऑनलोड' हैंडलर को खोलने के लिए कोई फर्क नहीं पड़ता है, लेकिन केवल यह इंगित करता है कि यदि आप कहीं और पैटर्न लागू करते हैं। –
Howto उपयोग प्रत्यावर्तन बेनामी कार्य पर
चलें कहते हैं कि हम एक गुमनाम भाज्य समारोह है और हम इसे रिकर्सिवली क्या करना चाहते हैं पासिंग। हम किसी नाम के बिना फ़ंक्शन कैसे कॉल करते हैं? अच्छी तरह से जावास्क्रिप्ट में arguments.callee प्रॉपर्टी में वर्तमान में निष्पादित फ़ंक्शन के लिए एक पॉइंटर होता है जिसका अर्थ है कि एक अनाम फ़ंक्शन वास्तव में स्वयं को कॉल कर सकता है।
alert((function(n){ if(n <= 1){return 1;}else{return n*arguments.callee(n-1);}})(10));
खोज के लिए प्रश्न के शीर्षक में सुधार कर लें, ताकि यह होगा सिर्फ 'window.removeEventListener ('अनलोड', arguments.calee) '? – Pablo
@ माइकल: दो "एल" के साथ, लेकिन हाँ। लेकिन * सामान्य * में यह करने का एक अच्छा तरीका नहीं है; ykaganovich के जवाब पर मेरी टिप्पणी देखें। –
यह जवाब है! मैं वास्तव में चाहता हूं कि यह वर्तमान में मौजूद एक के बजाय चुना जाएगा। –
मैं इस प्रयास नहीं किया है, लेकिन कैसे MyClass में ही removeEventListener विधि कॉल ले जाने के बारे। विधि अज्ञात नहीं होगी, लेकिन आप वैश्विक नामस्थान को प्रदूषित नहीं करेंगे और यह उस वर्ग का हिस्सा होगा जो इसे जोड़ रहा है। आप इसे "निजी" भी बना सकते हैं। मुझे यकीन है कि अपनी शैली है क्या नहीं कर रहा हूँ, लेकिन मैं इसे कुछ इस तरह लिखना चाहते हैं:
var MyClass = function(){
var self = this;
self.shutdown = function(){
window.removeEventListener('unload',self.shutdown,false);
};
self.initialize = function() {
window.addEventListener('unload',self.shutdown,false);
};
return self;
};
var myObject = new MyClass();
myObject.initialize();
मैं यह क्या MyClass करता है पर निर्भर करता है लगता है और आप इसे कैसे इस्तेमाल करते हैं।
arguments
वस्तु हमेशा बुलाया समारोह को संदर्भित करता है के callee
संपत्ति:
window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', arguments.callee);
}, false);
देखें: MDC: callee
- 1. पायथन में एक कॉलबैक को लागू - वर्तमान कार्य करने के लिए एक प्रतिदेय संदर्भ गुजर
- 2. Capistrano कार्य में वर्तमान सर्वर का संदर्भ
- 3. पहुँच "इस" जावा गुमनाम वर्ग
- 4. एक तुरंत लागू गुमनाम कार्य करने के लिए खिड़की और अपरिभाषित पासिंग। क्यूं कर?
- 5. स्थानीय पैरामीटर के साथ गुमनाम कार्य कैसे करें
- 6. संश्लेषण त्रुटि "संपत्ति कार्यान्वयन घोषणा के लिए गुमनाम संदर्भ"
- 7. CGContext वहाँ वर्तमान संदर्भ रीसेट करने के लिए
- 8. सेलेरी - वर्तमान कार्य के लिए कार्य आईडी प्राप्त करें
- 9. PHP: गुमनाम कार्य को तर्क के रूप में पास करें
- 10. कैसे एक गुमनाम प्रकार
- 11. XMLHttpRequest: कैसे संदर्भ रखने के लिए "इस"
- 12. जावास्क्रिप्ट: 'इस'
- 13. एचटीएमएल कैनवास संदर्भ के लिए पथ पर वर्तमान बिंदु खोजें?
- 14. बदल "इस" के लिए एक संदर्भ-टू-सूचक
- 15. नाम 'क्लाइंटस्क्रिप्ट' नाम वर्तमान संदर्भ
- 16. vimrc - वर्तमान कार्य निर्देशिका
- 17. आत्म संदर्भ में कार्य
- 18. जावास्क्रिप्ट - गुमनाम समारोह (varScope) से वापसी
- 19. सहायता, "इस" मुझे जावास्क्रिप्ट
- 20. मैं एक कस्टम कार्य के भीतर वर्तमान परियोजना संदर्भ का उपयोग कैसे करूं?
- 21. सी ++/सीएलआई में कार्य करने के लिए एक तर्क पास?
- 22. प्रारंभ एक संदर्भ - चेतावनी C4355: 'इस':
- 23. कैसे (संदर्भ) वर्तमान एक्सएमएल
- 24. बटन के लिए गुमनाम इनर क्लासों
- 25. नाम 'EVAL' वर्तमान संदर्भ
- 26. एक जावा कार्य करने के लिए एक सरणी पासिंग
- 27. एक जावास्क्रिप्ट टाइमआउट खाली करने के लिए कैसे एक समारोह
- 28. HttpUtility वर्तमान संदर्भ
- 29. SignalR ASPNetHost वर्तमान संदर्भ
- 30. गुमनाम रूप से एक बाल्टी
बाद में –