学习使用call和apply,我想需要问自己两个问题
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是以数组形式传