call和apply的區別

2021-08-03 07:47:39 字數 1481 閱讀 7544

1、方法定義

call方法:

語法:call([thisobj[,arg1[, arg2[, [,.argn]]]]])

定義:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。

說明:

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

如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。

定義:應用某一物件的乙個方法,用另乙個物件替換當前物件。

說明:

如果 argarray 不是乙個有效的陣列或者不是 arguments 物件,那麼將導致乙個 typeerror。

如果沒有提供 argarray 和 thisobj 任何乙個引數,那麼 global 物件將被用作 thisobj, 並且無法被傳遞任何引數

它們的不同之處:

call:則是直接的引數列表,主要用在js物件各方法互相呼叫的時候,使當前this例項指標保持一致,或在特殊情況下需要改變this指標。如果沒有提供 thisobj 引數,那麼 global 物件被用作 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.

var arr1=new

array("1","2","3");

2.var arr2=new

array("4","5","6");

3.

call 和apply 的區別

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

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 再看乙個複雜的...

call 和 apply 的區別

相同點 都是為了改變this的指向 不同點 傳參的類別不同 call 第二個引數開始接受乙個引數列表 tostring.call 1,2,3 let array 1,2,3 obj function fun a,b,c a 1,b 2,c 3 a 1,2,3 b c undefined fun.ca...