在下面的代码中,我想知道上下文是如何绑定的this
:
在obj.myMethod();
中,为对象提供了上下文。所以记录它给出了对象。
在var myFun = obj.myMethod;
thenmyFun();
中,上下文被赋予窗口。
唯一的区别是您将函数设置为变量。
var obj = {
myMethod : function () {
console.log(this); //'this' is bound to context of object
}
};
obj.myMethod(); //calling object property directly = Object {myMethod: function}
var myFun = obj.myMethod;
myFun(); //but setting obj method property to a variable and running gives Window as context
编辑:
按照这个 melonJS 教程,我对如何使用这个回调感到困惑(向下滚动到第 2 部分:加载我们的关卡,您将看到完整的代码)
// Set a callback to run when loading is complete.
me.loader.onload = this.loaded.bind(this);
我阅读了关于回调的本教程,所以我了解它们的用途......但我不明白。它说this.loaded.bind(this)
this
第一个和第二个语句有什么区别?他们不一样吗?为什么我需要打电话this
然后.loaded.bind()
再通过this
?
所以,在你的例子中,你说我可以通过做来保持上下文var bindMe = obj.myMethod.bind(obj);
,在这种情况下,你正在使用,this
因为你已经在对象中game
?所以this
指的是主人game
?
谢谢