var obj = {
say: function() {
function _say() {
console.log(this);
}
return _say.bind(obj);
}()
};
obj.say();
代码结果是注销全局或窗口,我想知道为什么bind方法没有将'this'绑定(bind)到obj对象上下文?
最佳答案
在赋值期间,变量 obj
仍然没有任何值。因此,您对 bind 的调用等同于 .bind(undefined)
,其行为与您观察到的方式相同。
更具体地说,this
引用 window
是因为 OrdinaryCallBindThis执行以下步骤(非严格模式):
[...]
If thisArgument is undefined or null, then
[...]
Let thisValue be globalEnvRec.[[GlobalThisValue]].
您可以在 chrome 调试器中检查 [[BoundThis]]
在调用后确实是 undefined
。
关于javascript - javascript 的绑定(bind)方法似乎没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626358/