bind理解

MDN的解释是:bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。 image.png 任何一个函数都有bind这个方法,同apply和call一样。bind()被调用时先创建一个新的函数,再把新函数的this指向bind的第一个参数 this.x = 9; // 在浏览器中,this指向全局的 "window" 对象 var module = { x: 81, getX: function() { return this.x; } }; module.getX(); // 81 var retrieveX = module.getX; retrieveX(); // 返回9 - 因为函数是在全局作用域中调用的 // 创建一个新函数,把 'this' 绑定到 module 对象 // 新手可能会将全局变量 x 与 module 的属性 x 混淆 var boundGetX = retrieveX.bind(module); boundGetX(); // 81 var obj = { a:1 } setTimeout(function(){ console.log(this) }.bind(obj),100) //打印出:{a: 1}

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):