在下面的代碼中,我使用了closure來「保存」這個「this」引用並將它傳遞給一個回調函數。但我想知道,是否有其他技術來完成同樣的事情?是否有其他技術在JavaScript中關閉?
function App()
{
this.number = 75;
}
App.prototype.xmlHandler = function(self)
{
if (this.number == 99) //true at run-time
console.log("this.number == 99 is true");
else
console.log("this.number == 99 is false");
if (self.number == app.number) //true at run-time
console.log("self.number == app.number is true");
else
console.log("self.number == app.number is false");
};
App.prototype.loadXML = function(url, handler)
{
var self = this;
var req = new XMLHttpRequest();
req.number = 99;
req.addEventListener("load", function(){handler.call(req, self);}, false);
req.open('GET', url, true);
req.send();
};
App.prototype.init = function()
{
this.loadXML('resources.xml', this.xmlHandler);
};
var app = new App();
app.init();
根據xmlHandler方法,主要有兩種不同的「這個」(一個[此]爲REQ對象和應用程序對象的其他[自])。那麼,是否有其他技術可以在同一個屋檐下獲得兩個不同的「這個」值?
不應該'無功自我= this'只是做的把戲,保存當前背景下,精, 你爲什麼會需要這樣做的其他方式? – C5H8NNaO4
您可以將引用另存爲另一個可在該上下文中訪問的對象的屬性,例如,在這種情況下是'event.target'。但是,爲什麼上面的解決方案不好呢? –
我很好奇,如果存在替代技術封閉。或者,關閉唯一可用的東西? – user1906062