bind()方法创建一个新的函数(称为绑定函数), 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。
// bind方法是复制的意思,参数可以在复制的时候传进去,也可以在复制之后调用的时候传入进去
// apply和call是调用的时候改变this指向
// bind方法,是复制一份的时候,改变了this的指向
this.name = 'jack'; // window的this
var demo = {
name:'rose',
getName: function(){
return this.name; // demo的this
}
}
console.log(demo.getName()); //输出rose 这里的this指向demo
var anot = demo.getName;
console.log('jack'+anot()); //输出jack 这里的this指向全局对象
var anot2
anot2 = demo.getName.bind(demo);
console.log('rose'+anot2()); //输出rose 这里this指向了demo对象了
注意,如果demo对象的getName方法写成箭头函数,这个this就是指向外部的this
var demo = {
name:'rose',
getName: () => {
return this.name;
}
}
里面有很多例子
https://blog.csdn.net/qq_32849999/article/details/80472417