javascript - callback function return global object :/ -


कृपया नीचे वर्णित मेरी समस्या के साथ मदद करें:

  var भूमि = कार्य () {this .cities = []; } Land.prototype = {addCity: फ़ंक्शन (शहर) {this.cities.push (शहर); }} Var शहर = फ़ंक्शन () {this.val = "foo"; }; सिटी.प्रोटोटाइप = {टेस्ट: फ़ंक्शन () {this.val = "bar"; console.log (this); }} Var myLand = नई भूमि (); MyLand.addCity (नया सिटी ()); // यह पंक्ति वापसी सही - सिटी ऑब्जेक्ट - :) myLand.cities [0] .test (); फ़ंक्शन कॉलबैक (एफएनसी) {एफएनसी (); } // यह पंक्ति वापसी विफल - वैश्विक ऑब्जेक्ट - :( // मुझे पहली बार कॉलबैक (myLand.cities [0] .test) के रूप में सिटी ऑब्जेक्ट की आवश्यकता है;  

ऐसा इसलिए होता है क्योंकि आपका कॉलबैक फ़ंक्शन fnc पैरामीटर सीधे, और संदर्भ का आह्वान करता है fnc में कोई भी बेस ऑब्जेक्ट नहीं है ( fnc किसी भी सुलभ वस्तु के लिए बाध्य नहीं है)

इस से बचने के कई तरीके हैं, सबसे आसान आईएमओ, एक अनाम फ़ंक्शन का उपयोग करने के लिए होगा, और वहां आपके फ़ंक्शन निष्पादित होगा:

  कॉलबैक (फ़ंक्शन () {myLand.cities [0] .test ();});  

उस तरह से, यह मूल्य के अंदर परीक्षण होगा myLand.cities [0] वस्तु।

फ़ंक्शन पर यह मान के व्यवहार के बारे में अधिक जानकारी के लिए देखें।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -