天天看点

call和apply用法1:基本用法2:apply和call的用法3:apply和call的不同4:apply和call其他用法

一直都知道call和apply,用的真的很少,今天想起来了,就随便说说吧

1:基本用法

看到call和apply,大家想到的应该都是一句话 改变对象执行的上下文

2:apply和call的用法

其实call和apply的用意简单来说都一样,就是改变this 的指向 这也是他们的相同点 下面看一个具体的demo var person = {

    name: 'xiao ming',

    age: 18,

    who: function () {

        console.log( 'my name is ' + this.name + ' , ' + this.age + ' years old' );

        console.log( person === this);

    }

}

person.who();

person.who.apply({name:'123',age:15});

person.who.call({name:'123',age:15});

person.who.call({name:'123'})

这样person的指向就改变了

3:apply和call的不同

先看下apply和call 的用法

call 

apply

可以看出,它们里面传入的参数不同。

那到底什么时候该用apply,什么时候用call呢

根据你要传入的参数来做选择,不需要传参或者只有1个参数的时候,用

call

,当要传入多个对象时,用

apply

4:apply和call其他用法

function superClass () {
    this.a = ;
    this.print = function () {
        console.log(this.a);
    }
}

function subClass () {
    superClass.call(this);
    this.print();
}

      

用call实现继承,subClass通过call实现对superClass 的继承。

本文参考:https://www.jianshu.com/p/131ce0390cf8