---恢復內容開始---
首先這三個方法的作用都是用來改變this的值,而this的值一般有幾種情況。
1、函式作為乙個物件的乙個方法來呼叫,此時this的值指向物件。
var a=}a.f(1);
2、函式的正常呼叫,此時的this指向全域性物件,一般來說是window物件。
functionf(x)
f(1);
3、正常函式,但是用new來呼叫函式,此時this的值指向新建立的物件。
functionf(xx)
var b=new f(1);
call函式,第乙個引數是改變之後的this的指向物件,但是後來的引數是不定的,有多少個傳多少個,必須明確額度傳遞每乙個引數,也是立即執行的。
bind函式和call相似,第乙個引數是this的指向物件,從第二個開始時接受的引數列表,但是bind函式是返回函式,需要呼叫而不是立即執行。
---恢復內容結束---
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 傳遞繫結...