Apply與Call的異同

2021-09-02 12:34:54 字數 1220 閱讀 7327

/*call()方法*/

function.call(thisobj[, arg1[, arg2[, [,...argn]]]]);

它們各自的定義:

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

它們的共同之處:

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

它們的不同之處:

示例**:

(1)基本用法

function add(a,b)

function sub(a,b)

alert(a1); //6

alert(a2); //2

/*call的用法*/

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

(2)實現繼承

function animal(name)    

}function cat(name)

var cat = new cat("咕咕");

cat.showname();

/*call的用法*/

animal.call(this,name);

(3)多重繼承

function class10()   

}function class11()

}function class12()

var c2 = new class12();

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

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

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

數的方式傳遞給方法)

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

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

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

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

**:

Call 與Apply 的異同

在了解異同之前,先來搞清楚這兩個方法都是怎麼用的 call function.call obj arg1 arg2 argn 呼叫call的物件必須是個函式function call的第乙個引數將會是function改變上下文後指向的物件,也就是上面例子裡的小剛,也就是上上面例子裡的老婆大人,如果不...

call與apply方法的異同

改變物件的執行上下文 什麼是執行上下文?我們在寫乙個方法的時候,總是會用到乙個關鍵字this,而this的指向就是我們這裡所說的執行上下文 執行環境 首先我們要知道,this指向的永遠是呼叫該方法的物件,如何證明this的指向就是當前物件呢?看下面這段 function func func 1 中方...

call和apply的異同

共同點 作用 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。以call為例,語法 obj1.method1.call obj2,argu...