【发布时间】:2017-08-11 03:10:37
【问题描述】:
var obj = {
say: function() {
function _say() {
console.log(this);
}
return _say.bind(obj);
}()
};
obj.say();
代码结果是注销全局或窗口,我想知道为什么bind方法没有将'this'绑定到obj对象上下文?
【问题讨论】:
-
这里真正的问题是如果你需要
this绑定,你为什么不使用一个实际的object-with-prototype?您展示的代码试图将“实例逻辑”放入“无实例”代码中,您可以做到这一点,它是 JavaScript,但它也真的……很傻?你实际上想用这段代码做什么? (或使用这样的代码) -
(1) 在
return _say.bind(obj);行设置断点。 (2) 当它停在那里时,检查obj的值。 (3) 认真思考。 (4) 向您的rubber ducky 解释为什么您尝试将 IIFE 的结果分配给属性say。 -
感谢您的 cmets,@Mike 'Pomax' Kamermans。这段代码只是练习,我想知道为什么'this'在使用bind(undefined)时是全局的。
-
如果您是规范潜水,这是一个合理的问题,但您展示的代码绝对不值得在您打算实际使用的任何真实文件中使用,或者更糟糕的是,让其他人在处理 =)跨度>
标签: javascript this bind iife