MDN的解释是:bind() 方法创立一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其他参数将作为新函数的参数,供调用时使用。
任何一个函数都有bind这个方法,同apply和call一样。bind()被调用时先创立一个新的函数,再把新函数的this指向bind的第一个参数
this.x = 9; // 在浏览器中,this指向全局的 "window" 对象var module = { x: 81, getX: function() { return this.x; }};module.getX(); // 81var 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}