apply 和call 的區別

2022-05-01 16:51:14 字數 1605 閱讀 6081

/*

*/function

/*call()方法

*/function.call(thisobj,arg1,arg2,arg3...,argn);

兩個方法各自的定義是:

call:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。例如:b.call(a,args1,args2);即a物件呼叫b物件的方法。

它們的共同之處:

都 可以用來代替另乙個物件呼叫乙個方法,將乙個函式的物件上下文從初始的上下文改變為由thisobj指定的新物件。

它們的不同之處

call:示例

(1)基本用法

function

add(a,b)

function

sub(a,b)

sub呼叫add的方法

alert(a1); //6

alert(a2); //2/*

call的用法

*/var a1 = add.call(sub,4,2);

(2)實現繼承

function

animal(name)

}function

cat()

var cat new cat("kitty");

cat.showname();

/*call的用法

*/animal.call(

this,name)

(3)多重繼承

function

class10()

}function

class11()

}function

class12()

var c2 = new

class12();

c2.showsub(3,1); //

2c2.showadd(3,1); //

4

(1)math.max可以實現得到陣列中最大的一項:

這塊在呼叫的時候第乙個引數給了null,這是因為沒有物件去呼叫這個方法,我只需要用這個方法幫我運算,得到返回的結果就行,所以直接傳遞了乙個null過去。

(2)array.prototype.push可以實現兩個陣列的合併

1. var arr1 = new array("1","2","3");

2. var arr2 = new array("4","5","6");

//

求陣列中的最大項

var arr = [1,2,3,4,7,6,5,10,9];

,arr);

alert(max);

//求陣列中的最小項

,arr);

alert(min);

//合併兩個陣列並返回新陣列的長度

var arr1 = new array("1","3","5","7","9"),

arr2 = new array("2","4","6","8");

//返回陣列的長度

call 和apply 的區別

call方法 語法 call thisobj,object 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件 說明 call方法可以用來代替另乙個物件呼叫乙個方法。call方法可將乙個函式的物件上下文從初始的上下文改變為由thisobjext指定的新物件。如果沒有提供thisobj引數,那麼g...

call和apply的區別

1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...

call和apply的區別

如下 複製 function add a,b function reduce a,b add.call reduce,1,3 將add方法運用到reduce,結果為4 如下例 如下 複製 function b b window b.call window b.call a 2,3 a 再看乙個複雜的...