apply call bind有什麼區別?

2022-08-05 09:30:19 字數 982 閱讀 4070

var a =,

func2:

function

() };

a.func2()

//cherry

var a =,

func2:

function

() .call(a),100);}};

a.func2()

//cherry

var a =,

func2:

function

() .bind(a)(),100);}};

a.func2()

//cherry

語法:call 的語法為:

fun.call(thisarg[, arg1[, arg2[, ...]]])

var a =

}var b =a.fn;

3

var a =

}var b =a.fn;

b.call(a,1,2) //

3

我們先來將剛剛的例子使用 bind 試一下

var a =

}var b =a.fn;

b.bind(a,1,2)

我們會發現並沒有輸出,這是為什麼呢,我們來看一下 mdn 上的文件說明:

bind()方法建立乙個新的函式, 當被呼叫時,將其this關鍵字設定為提供的值,在呼叫新函式時,在任何提供之前提供乙個給定的引數序列。

所以我們可以看出,bind 是建立乙個新的函式,我們必須要手動去呼叫:

var a =

}var b =a.fn;

b.bind(a,1,2)() //

3

apply call bind 使用總結

參考 語法 語法 fun.call thisarg arg1 arg2 var a var b a.fn 接受的是乙個陣列var a var b a.fn 接受的是引數 b.call a,1,2 3var a var b a.fn b.bind a,1,2 以上code我們會發現並沒有輸出.bind...

apply,call,bind個人總結

首先他們是用來改變呼叫方法中this的指向的,而且他們都是function的prototype。分別為 function.prototype.call function.prototype.bind 引數1 thisarg 物件也就是需要指向this的物件 引數2 argsarray 陣列 會按對應...

手動實現apply call bind

window.a 1 定義乙個全域性變數 var obj 定義乙個物件用來繫結 var funct function b,c 定義乙個函式用來執行 funct 1,2 1 1 2 直接執行,相當於window.funct 1,2 this繫結於window base base window 傳遞繫結...