首先清楚bind ,apply 和call的异同点
1,三者可以改变函数的this指向
2,都接受传参且接受的第一个参数都是this要指向的对象
不同点:
call和apply是立即执行的。但是bind返回的是一个函数
例如
let a = {
name:"张三",
age:23,
hi:function(a,b){
console.log(this.name+this.age)
}
}
var b = {
name:李四,
age:34
}
a.hi()张三23
a.hi.bind(b) ("王五","37) //李四34 这里bind返回的是一个函数需要再次调用 bind在调用的()里直接添加参数
a.hi.apply(b,["王五","37])apply 里面的第二个参数是一个数组
a.hi.call(b,"王五","37") call后面的第二个参数和hi()函数里面的是一一对应的
了解以上信息,模拟一个bind绑定
请先了解 Array.prototype.call和slice的用法