首先,为什么把apply和call放在一块说呢,因为,这两个函数的作用是完全一样的,区别在于传参的方式有差别:
//call和apply第一个参数是一样的,obj是this指向的对象
fn.apply(obj, [args]);
//apply的[args]是fn的参数,用数组形式传入
fn.call(obj, arg1, arg2, arg3, arg4...);
//call的arg1, arg2, arg3, arg4...是fn的参数,一个一个地传入那么,这俩函数有什么用呢?主要有二:
一.改变函数作用域,也就是改变函数里this的指向
let person1 = {
name:'Flash',
introduceMyself(){
console.log(`i am ${this.name}`)
}
}
person1.introduceMyself() //i am Flash
person1.introduceMyself.apply(person2) //i am Batman二.实现继承
留坑