Javascript通过bind()掌控this:
bind能为我们做些什么,同时它的好处在哪里。
(一)事件处理函数 所谓的事件处理函数其实就是绑定事件后的那个callback,这里如果用上bind你的代码应该会简洁优雅一些
var logger = { x: 0, updateCount: function(){ this.x++; console.log(this.x); } }
// 下面两段代码的实现是一样的
document.querySelector('button').addEventListener('click', function(){ logger.updateCount(); });
document.querySelector('button').addEventListener('click', logger.updateCount.bind(logger));
本来通常情况下处理函数都要用一层匿名函数包裹一下,才能维持处理函数本身的this.这里直接通过.bind(logger)人为的将其执行时的this指向logger对象。 .bind()创建了一个函数,当这个函数在被调用的时候,它的 this 关键词会被设置成被传入的值(这里指调用bind()时传入的参数)。