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}
发表评论 (审核通过后显示评论):