語法:
func.call(thisarg, arg1, arg2, ...)
thisarg
表示函式執行時使用的this
值,arg1, arg2, ...
是引數列表,表示函式執行時需要的引數。
在建構函式繼承的示例中:
/* 父類 */function person(name, age) /* 子類 */function student(name, age, courses)
子類建構函式需要復用父類建構函式中的**,可利用call()
方法呼叫person()
函式,修改執行時的this
指向,同時,將屬性name
、age
傳遞給person
函式,以方便復用時為student
物件例項新增對應的屬性。
語法:將建構函式繼承的示例修改一下:
求乙個陣列中的最大值,比如陣列為:[9, 3, 18, 7, 25, 4, 1, 19, 12]
。
在math
物件中有max()
方法,可求一組數中的最大值,但max
方法不接受陣列的引數,即:
math.max(9, 3, 18, 7, 25, 4, 1, 19, 12) // 25math.max([9, 3, 18, 7, 25, 4, 1, 19, 12]) // nan
當然,隨著es6
中...
(spread syntax)的出現,我們也可以使用call()
方法來實現了:
math.max.call(null, ...array) // 25
甚至於直接展開陣列,而不使用call()
方法:
createlistfromarraylike
演算法步驟:
call 和call的區別
這兩個方法都是函式物件的方法,需要通過函式物件來呼叫。它們的第乙個引數是乙個物件。因為你可以直接指定 this 繫結的物件,因此我們稱之為顯式繫結。例1 1 thisobj不傳或者為null undefined時,函式中的this會指向window物件 非嚴格模式 2 傳遞乙個別的函式名時,函式中的...
call 和apply 的區別
call方法 語法 call thisobj,object 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件 說明 call方法可以用來代替另乙個物件呼叫乙個方法。call方法可將乙個函式的物件上下文從初始的上下文改變為由thisobjext指定的新物件。如果沒有提供thisobj引數,那麼g...
call和apply的區別
1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...