call() 和 apply() 是預定義的函數方法。
它們作用一樣——改變上下文,即this的指向。只是使用方式不同。
語法:
foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments)
== this.foo(arg1, arg2, arg3);
apply方法——能劫持另外一個對象的方法,繼承另外一個對象的屬性.
Function.apply(obj,args)方法能接收兩個參數,實現將函數作爲另外一個對象的方法運行
obj:這個對象將代替Function類裏this對象
args:這個是數組,它將作爲參數傳給Function(args–>arguments)
call方法——與apply的作用相同,只不過是參數列表不一樣.
Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj:這個對象將代替Function類裏this對象
params:這個是一個參數列表
第一個參數傳入的都是對象,區別在於第二個參數。
function A(){
this.flag = 'A';
this.tip = function(){
alert(this.flag);
};
}
function B(){
this.flag = 'B';
}
var a = new A();
var b = new B();
//a.tip.call(b);
a.tip.apply(b);//彈出'B'
call 和 apply 都可以讓B對象調用A對象的tip方法,並且修改了this的當前作用對象.