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