call 和call的區別

2021-10-13 19:36:12 字數 1269 閱讀 3121

語法:

func.call(thisarg, arg1, arg2, ...)
thisarg表示函式執行時使用的this值,arg1, arg2, ...是引數列表,表示函式執行時需要的引數。

在建構函式繼承的示例中:

/* 父類 */function person(name, age) /* 子類 */function student(name, age, courses)
子類建構函式需要復用父類建構函式中的**,可利用call()方法呼叫person()函式,修改執行時的this指向,同時,將屬性nameage傳遞給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 指定的新物件。如果沒...