bind(this对象,arg1,arg2。。。) ,第二个参数为参数列表
- 用于改变this指向;
- 调用会返回一个新的改变了this指向的函数,并不会立即执行而是需要调用新的函数;
- 可以进行部分传参;
- 如果是箭头函数无法改变this只能改变参数;
使用方式:
手写bind()
Function.prototype.myBind(context, ...bindArgs){
//context: bind传入的this;
//bindArgs传入的参数
const self = this; //当前函数本身
return function(...args){
const newArgs = bindArgs.concat(args);
return self.apply(context, newArgs)
}
}
apply(this指的对象,[…args]),第二个参数传递为一个数组
apply接收两个参数,第一个参数为调用的函数内部的this指向,第二个参数传递的则是一个数组,可以是类数组,
call(this所指对象,arg1,arg2.。。。。)
call传入的参数不固定,与bind传入的参数意义相同。第一个参数指函数体内this所指的对象,第二个参数往后依次被传入方法中。