बस, आपके प्रश्न का उत्तर करने के लिए हाँ, thisUsefulThing thatUsefulThing
उपयोग कर सकते हैं लेकिन अपने कोड के रूप में वर्तमान में चलाता है, 'इस' है:
var somethingUseful = {
thisUsefulThing: function() {
this.thatUsefulThing();
},
thatUsefulThing: function() {
console.log("I am useful!");
}
}
setTimeout(somethingUseful.thisUsefulThing, 1000);
अभी, मैं इस त्रुटि हो रही है वास्तव में वैश्विक नहीं, यह किसी भी संदर्भ का संदर्भ है जो सभी प्रत्यक्ष वंशजों के लिए उपयोगी है।
जब मैं शाब्दिक वस्तुओं के साथ काम कर रहा हूँ, मैं आमतौर पर उन्हें नाम से नहीं बल्कि साथ तुलना संदर्भ 'इस' है, इसलिए आपके मामले में मैं somethingUseful.thatUsefulThing()
क्यों साथ 'this.thatUsefulThing()' की जगह लेंगे ? क्योंकि यह वैश्विक स्तर पर काम करता है, वैसे भी!
संपादित करें:
रूप plalx मेरा उत्तर करने के लिए अपने टिप्पणी में बताया, इस वर्ग के (एक उदाहरण वर्ग के सदस्य के साथ) को लागू करने के लिए सर्वोत्तम प्रथाओं कार्यात्मक वर्गों/प्रोटोटाइप का उपयोग करें और कुछ इस तरह दिखेगा:
function SomethingUseful() {
this.member = 'I am a member';
}
SomethingUseful.prototype.thisUsefulThing = function() {
this.thatUsefulThing();
}
SomethingUseful.prototype.thatUsefulThing = function() {
console.log('I am useful, and ' + this.member);
}
usefulObject = new SomethingUseful();
usefulObject.thisUsefulThing(); // logs fine with access to this.member
setInterval(usefulObject.thisUsefulThing.bind(usefulObject), 1000); // has access to this.member through bind()
आपका क्या मतलब है "वस्तु का दायरा" बनाम "वैश्विक स्तर का दायरा"? लिखित कार्यों के रूप में आपका कोड। – user2736012
बस ध्यान रखें कि जब आप 'object.method()' करते हैं, तो 'method' में 'this' का मान' ऑब्जेक्ट 'का संदर्भ बन जाता है। कोई फर्क नहीं पड़ता कि ऑब्जेक्ट और विधि कब बनाई गई थी। यह सब मायने रखता है * कैसे * आप विधि को कॉल करते हैं। एक ही ऑब्जेक्ट को एक अलग ऑब्जेक्ट पर रखें, उसे उस ऑब्जेक्ट से कॉल करें, और 'इस' का मान नई ऑब्जेक्ट को संदर्भित करेगा। 'var o = {thatUsefulThing: function() {console.log (" मैं भी उपयोगी हूं! ");}}; o.foo = कुछ उपयोगी। यह उपयोगी है; o.foo(); // मैं भी उपयोगी हूं – user2736012
वहां, मैंने इसे उस त्रुटि को सीधे प्रतिबिंबित करने के लिए संपादित किया है जिसे मैं संक्षेप में सामना कर रहा हूं। – Synthead