apply和call

119 阅读1分钟

首先,为什么把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

二.实现继承

留坑