来自MDN:
bind() 方法创建一个新函数,当调用该函数时,将其 this 关键字设置为提供的值
我可以很高兴地看到它在这个例子中工作:
(function () {
console.log(this);
}).bind({foo:"bar"})();
哪个日志Object { foo="bar"}
。
但是,如果我链接另一个绑定调用,甚至是“调用”调用,我仍然会调用函数,并将“this”分配给传递给第一个绑定的对象。例子:
(function () {
console.log(this);
}).bind({foo:"bar"}).bind({oof:"rab"})();
&
(function () {
console.log(this);
}).bind({foo:"bar"}).call({oof:"rab"});
两者都记录Object { foo="bar"}
而不是我所期望的:Object { oof="rab"}
.
无论我链接多少个绑定调用,似乎只有第一个调用有效。
为什么?
这可能会有所帮助。我刚刚发现 jQuery 的版本也有同样的行为!:O
jQuery.proxy(
jQuery.proxy(function() {
console.log(this);
},{foo:"bar"})
,{oof:"rab"})();
日志 Object { foo="bar"}