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 下面進行一下...