關於call apply和bind,請看這篇

2022-07-26 16:45:14 字數 1715 閱讀 4193

call

func.call(context, arg1, arg2, ...)

引數說明:

context :在 func函式執行時指定的this值,當第乙個引數為null、undefined的時候,預設指向window。

arg1, arg2:…指定的引數列表。

返回值:

使用呼叫者提供的 this 值和引數呼叫該函式的返回值。若該方法沒有返回值,則返回undefined。

(與call相似,只是引數不同而已)

引數說明:

context :在 func函式執行時指定的this值,當第乙個引數為null、undefined的時候,預設指向window。

arr 乙個陣列或者類陣列物件,其中的陣列元素將作為單獨的引數傳給 func 函式。

bind

func.bind(context, arg1, arg2, ...)

引數說明:

context :在 func函式執行時指定的this值,當第乙個引數為null、undefined的時候,預設指向window。

arg1, arg2:…指定的引數列表。

返回值:

返回乙個原函式的拷貝,並擁有指定的this值和初始引數。

例如:

var name = '小王', age = 17;

var obj =

}var db =

//

以下將obj的myfun方法應用到db物件上

obj.myfun.call(db,'成都','上海');     //

德瑪 年齡 99 來自 成都去往上海

德瑪 年齡 99 來自 成都去往上海

obj.myfun.bind(db,'成都','上海')(); //

德瑪 年齡 99 來自 成都去往上海

obj.myfun.bind(db,['成都','上海'])();   //

德瑪 年齡 99 來自 成都, 上海去往 undefined

區別

//

通過隱式繫結實現

function.prototype.call = function

(context, ...args)

//執行func

let res =context.func(...args);

//刪除方法,否則context就無緣無故多了個func

delete

context.func;

return

res;

}

(context, args)

let res =context.func(...args);

delete

context.func;

return

res;

}

function.prototype.bind = function

(context, ...bindargs)

//bind 返回乙個繫結 this 的函式

return

function

(...callargs)

return

func.call(context, ...args);

}}

JS容易混淆的call apply和bind方法

詳情描述 共同點call 定義 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件 理解 method1.call method2,num1,num2 method1 num1,num2 即用method1替換method2 例子 function animal function dog var an...

關於銀聯卡BIN

銀聯卡bin 發卡行識別碼,最長 12 位,最短 6 位,因此在卡交易時候需要判斷其bin屬於哪家銀行,要從12位開始判斷,如果12位沒有,則判斷11位,直到6位,如果6位也沒有,那即視為非銀聯交易卡 但是由於卡bin資訊是存在資料庫中的,所以在交易的時候每次都查詢資料庫,會使交易時間更慢,容易造成...

call apply和bind的原理

call 作用 call 方法就是使用乙個指定this值和若干個指定引數值的前提下呼叫摸個函式或方法。var foo function bar 如果不對this進行繫結執行bar 會返回undefined bar.call foo 1也就是說call 改變了this的指向,指向了foo 下面進行一下...