javascript - javascript 的绑定(bind)方法似乎没有按预期工作

标签 javascript this bind iife

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/

相关文章:

Java 构造函数重载错误?

c++ - 通过 boost 信号 2 的观察者模式

javascript - Float32 到 Int16 - Javascript(网络音频 API)

asp.net - 使用 javascript 控制 gridview 列可见性

javascript - Jasmine:模拟单例的内部方法

javascript - `this` 是否可靠地等于所有浏览器的内联事件处理程序中触发事件的元素?

Javascript: 'splice' 的算法性能如何?

java - 这个关键字及其工作原理

c++ - 共享指针的排序列表

bash - 如何使用 bash 脚本将多行粘贴到文件中?