一直都知道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