相关疑难解决方法(0)

链接.bind()调用JavaScript.出乎意料的结果?

来自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

40
推荐指数
3
解决办法
2365
查看次数

标签 统计

javascript ×1