JavaScript中的每一個Function對象都有一個apply()方法和一個call()方法框沟,它們的共同之處:都“可以用來代替另一個對象調(diào)用一個方法怕敬,將一個函數(shù)的對象上下文從初始的上下文改變?yōu)橛蓆hisObj指定的新對象”。
- (1)基本用法
function add(a,b){
return a+b;
}
function sub(a,b){
return a-b;
}
var a1 = add.apply(sub,[4,2]); //sub調(diào)用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1); //6
alert(a2); //2
/*call的用法*/
var a1 = add.call(sub,4,2);
- (2)實現(xiàn)繼承
function Animal(name){
this.name = name;
this.showName = function(){
alert(this.name);
}
}
function Cat(name){
Animal.apply(this,[name]);
}
var cat = new Cat("咕咕");
cat.showName();
- (3)多重繼承