oArchive.action.test2
आप एक समारोह है कि callback
तो के लिए अंक के लिए एक संदर्भ हो जाता है, लेकिन यह है कि समारोह तो callback()
का उपयोग कर कहा जाता है, जिसका अर्थ है कि यह एक तरीके के रूप में नहीं बुलाया जाता है और इसलिए this
वैश्विक वस्तु है। मुख्य बिंदु यह है कि this
किसी फ़ंक्शन से बाध्य नहीं है: यह निर्धारित किया जाता है कि फ़ंक्शन को कैसे कहा जाता है।
इस मामले में आप स्पष्ट रूप से कॉलबैक फ़ंक्शन के call
या apply
विधि का उपयोग कर कार्रवाई करने के लिए वस्तु this
बिंदु (लेकिन संग्रह वस्तु) कर सकता है:
test: function(callback) {
callback.call(this);
},
यह this
संग्रह वस्तु होने के लिए प्राप्त करने के लिए इसके बजाय, आपको संग्रह वस्तु को पास करने की आवश्यकता होगी:
var archive = function(){}
archive.prototype.action = {
test: function(callback, archive){
callback.call(archive);
},
test2: function(){
console.log(this);
}
}
var oArchive = new archive();
oArchive.action.test(oArchive.action.test2, oArchive);
स्रोत
2010-04-27 08:21:23