/*它們各自的定義:call:呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如:b.call(a, args1,args2);即a物件呼叫b物件的方法。*//*
call()方法
*/function.call(thisobj[, arg1[, arg2[, [,...argn]]]]);
它們的共同之處:
都「可以用來代替另乙個物件呼叫乙個方法,將乙個函式的物件上下文從初始的上下文改變為由thisobj指定的新物件」。
它們的不同之處:
示例**:
(1)基本用法
function add(a,b)(2)實現繼承function sub(a,b)
sub呼叫add的方法
]);alert(a1);
//6
alert(a2); //2/*
call的用法
*/var a1 = add.call(sub,4,2);
function animal(name)(3)多重繼承}function cat(name)
var cat = new cat("咕咕"
);cat.showname();
/*call的用法
*/animal.call(
this,name);
function class10()(1)math.max 可以實現得到陣列中最大的一項:}function class11()
}function class12()
var c2 = new
class12();
c2.showsub(
3,1); //
2c2.showadd(3,1); //
4
數的方式傳遞給方法)
這塊在呼叫的時候第乙個引數給了null,這是因為沒有物件去呼叫這個方法,我只需要用這個方法幫我運算,得到返回的結果就行,所以直接傳遞了乙個null過去。
(2)array.prototype.push可以實現兩個陣列的合併
var arr1=new array("1","
2","3"
);var arr2=new array("
4","
5","6"
);//
得到合併後陣列的長度,因為push就是返回乙個陣列的長度
來自:
apply 與call 的區別
function call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件...
apply 與call 的區別
function call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件...
apply 與call 的區別
call 方法 function.call thisobj arg1 arg2 argn 它們各自的定義 call 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如 b.call a,args1,args2 即a物件呼叫b物件的方法。它們的共同之處 都 可以用來代替另乙個物件呼叫乙個方法,將乙...