我有一個情況,我有一個對象,「富」,需要調用另一個對象的回調,「酒吧」,我需要在回調內的上下文是「酒吧」的。不過,踢球者除了從「酒吧」得到回撥之外,「富」不應該知道這件事。從Javascript中的回調中的對象獲取上下文
例子:
var foo =
{
message: "Hello foo",
doStuff: undefined
};
var bar =
{
message: "Hello bar",
callback = function()
{
alert(this.message);
}
};
foo.doStuff = bar.callback;
foo.doStuff();
我認識到,通常你會使用「呼叫」或「應用」來切換背景吧,但在我的特殊情況下,在調用foo.doStuff()
我不再有信息的時間關於回調來自何處。那麼有沒有另外一種方法來確定上下文(比如從回調函數本身來說)?
'foo.doStuff = bar.callback.bind(巴);'。或'foo.doStuff = function(){bar.callback.call(bar)};'這基本上是'bind'在幕後做的事情。 – banzomaikaka
'bar.callback.call(bar)'在功能上與'bar.callback()'相同。 –