मैं एक छोटा सा जावास्क्रिप्ट खेल ढांचे लिख रहा हूँ और अक्सर वस्तुओं का उपयोग 'गुण, जैसेमैं स्थानीय कार्यों में 'इस' कीवर्ड से कैसे छुटकारा पा सकता हूं?
this.depth = this.y;
लेकिन इन this
' तों काफी कष्टप्रद हैं @ _ @। क्या लिखने का कोई तरीका है ...
depth = y;
... वैश्विक वस्तु को प्रभावित नहीं कर रहा है?
मेरे उदाहरणों दो कारखाने कार्यों के माध्यम से बनाई गई हैं, और वे पूर्वनिर्धारित वैरिएबल की एक सीमित सूची बनाने, इसलिए उन सभी को depth
, y
, आदि कार्य, .apply()
विधि से उदाहरणों के लिए लागू किया जाता है, हालांकि यह सब बदला जा सकता है है।
कारण मुझे this
कीवर्ड छोड़ने की आवश्यकता है कि ढांचा केवल मेरे लिए नहीं बल्कि अन्य लोगों के लिए भी बनाया गया है। मुझे ढांचे में this
को हटाने की आवश्यकता नहीं है, लेकिन this
कीवर्ड इस लाइब्रेरी के आधार पर एप्लिकेशन को कोडिंग करते समय अधिक समय तक उपज करता है। एकमात्र समाधान जो मुझे अब तक पता है वह 'निजी' चर बना रहा है, लेकिन इससे लोगों के लिए कुछ असुविधा होती है जिन्होंने पहले जावास्क्रिप्ट के साथ काम नहीं किया है, और obj1 से obj1 में हेरफेर करने से .apply
- और भी नरक के साथ कई गुमनाम कार्य करने का कारण बनता है। इसलिए, जैसा कि मैं देख सकता हूं, जावास्क्रिप्ट में कोई पैनसिया नहीं है।
कंस्ट्रक्टर्स:
/*...*/
'Copy' : function (type) {
var obj = {
'x':0,
'y':0,
'xprev':0,
'yprev':0,
/*...*/
};
return obj;
},
'make' : function (type,x,y) {
obj = ct.types.Copy(type);
obj.x = obj.xprev = obj.xstart = x;
obj.y = obj.yprev = obj.ystart = y;
/*...*/
ct.stack.push(obj);
}
/*...*/
एक XY समस्या की तरह लगता है। – elclanrs
मुझे नहीं लगता, आपको वर्तमान ऑब्जेक्ट –
'यह = टी संदर्भित करने के लिए इसका उपयोग करना होगा; t.depth = y' ... लेकिन हाँ, यह 'भाषा का एक हिस्सा है। – serakfalcon