oop - Calling Functions in Objects with Javascript -


मेरे पास इस तरह परिभाषित ऑब्जेक्ट है:

  ब्लाह = {hideTimer: null, setTimer : फ़ंक्शन () {this.hideTimer = window.setTimeout (Blah.hidePopupInner, 500); // Greasemonkey} के कारण विंडो के माध्यम से किया जाना चाहिए, छिपाना पॉपअपइनर: फ़ंक्शन () {लॉग ("यह?" + यह); }, HidePopupInnerPublic: फ़ंक्शन () {Blah.hidePopupInner (); }}  

समस्या यह है कि killTimer में 'यह' ब्लाह में सेट नहीं है अगर मैं कहने के लिए लाइन को बदलता हूं

  this.hideTimer = window.setTimeout (ब्लाहाइडरपॉपअप इननर पब्लिक, 500);  

तो 'यह' ब्लाह की तरफ इशारा कर रहा है, इसलिए छिपाना टाइमर का उपयोग किया जा सकता है।

प्रत्येक विधि के लिए एक 'सार्वजनिक' विधि बनाने से समस्या का हल होता है, लेकिन चाहिए एक आसान समाधान हो ...?

ध्यान दें : यह सब Greasemonkey में है, लेकिन मुझे लगता है कि यह एक सामान्य जावास्क्रिप्ट प्रश्न है।

इसे हल करने के लिए, समय के निर्माण के दौरान आप अनाम फ़ंक्शन और दायरे के संदर्भ का उपयोग कर सकते हैं।

  (कोड ...) SetTimer: फ़ंक्शन () {var _this = this; This.hideTimer = window.setTimeout (फ़ंक्शन (एमएस) {_this.hidePopupInner ();}, 500); }, (कोड ...)  

पुनश्च: इसके अलावा, setTimeout कार्यान्वित फ़ंक्शन के लिए मिलीसेकेंड की संख्या पास करेगा। उदाहरण के लिए: कल्पना करें कि आपका फ़ंक्शन एक पैरामीटर प्राप्त कर सकता है, और उसके साथ कुछ सामान कर सकता है। लेकिन क्योंकि setTimeout आपके फ़ंक्शन में मिलीसेकेंड पास करेगा, इससे अप्रत्याशित त्रुटियां हो सकती हैं।


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

jquery - SimpleModal Confirm fails to submit form -

php - Multiple Select with Explode: only returns the word "Array" -