天天看點

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