JavaScript使用bind方法

60 篇文章 0 订阅
55 篇文章 1 订阅

函数还可访问bind方法创建新函数。无论使用哪种方法调用,bind方法创建的新函数与原始函数的函数体相同,新函数被绑定到指定的对象上。

<button id="testClick">Click Me!</button>
<script>
  console.log('---------------在事件处理中绑定指定的上下文-------------------------');
  var button = {
    clicked: false,
    click: function () {
      this.clicked = true;
      if (button.clicked) {
        console.log('The button has been clicked.');
      }
    }
  };
  var elem = document.getElementById('testClick');
  elem.addEventListener('click', button.click.bind(button));

  var boundFunction = button.click.bind(button);
  if (boundFunction != button.click) {
    console.log('Calling bind creates a completely new Function');
  }
  </script>

 

 

 

代码的秘诀在于使用bind()方法:

elem.addEventListener('click', button.click.bind(button));

 

所有函数都可以访问bind方法,可以创建并返回一个新函数,并绑定在传入的对象上,(在本例中,绑定在button对象上)。不管如何调用该函数,this均被设置为对象本身。被绑定的函数与原始函数行为一致,函数体一致。

无论何时单击按钮,都将调用绑定的函数,函数上下文是button对象。从下面的if语句可以看出:调用bind方法不会修改原始函数,而是创建一个全新的函数:

 

var boundFunction = button.click.bind(button);

if (boundFunction != button.click) {

console.log('Calling bind creates a completely new Function');

}

参考《JavaScript忍者秘籍》

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值