1. 什麼場景下需要使用call或者apply
2. 如何使用
首先什麼時候需要使用呢,看代碼
function Animal(nameValue) {
this.name = nameValue;
this.showName = function(aValue, bValue) {
return this.name + aValue + bValue;
}
}
function Cat(nameValue) {
this.name = nameValue;
}
兩個函數Animal, Cat, 其中Animal中有showName這個方法,那如果Cat也想用這個方法的話一定需要自己也定義一個麼?答案是否定的,這時候就是要用到call或者apply的時候了。
var animal = new Animal("Animal");
var cat = new Cat("Cat");
var nameCall = animal.showName.call(cat, "|a", "|b");
console.log(nameCall); // Cat|a|b
var nameApply = animal.showName.apply(cat,["|a","|b"]);
console.log(nameApply); // Cat|a|b
以上例子很清楚的展示了即使cat沒有showName這個方法也可以通過call或者apply借用animal的showName方法。
當然他們兩個的區別也很明顯,就是需要傳變量的時候,call是一個一個傳,apply是以數組形式傳