call apply bind的用法和區別

2021-10-07 01:47:46 字數 807 閱讀 2617

它們都是為了改變方法內部this的指向。

call的其餘引數就是乙個普通的引數列表。

call的用法

var obj =

function

get(age,***)

get.

call

(obj,22,

'男')

//列印 名字zky 年齡22 性別男 此時的this通過call方法 指向了obj

var obj =

function

get(age,***)

get.

(obj,[22

,'男'])

//列印 名字zky 年齡22 性別男 此時的this通過call方法 指向了obj

var obj =

function

get(age,***)

get.

bind

(obj,22,

'男')()

//這裡注意 需要()去呼叫一下這個bind方法 因為他返回的是乙個函式

//或者這樣寫(柯里化)

get.

bind

(obj)

.bind

(null,22

).bind

(null

,'男')(

)//這裡的this指向依賴宇第乙個bind中傳入的引數

這裡簡單說下柯里化是什麼意思

聊聊call apply bind的故事

實際上它們真正的樣子是這樣的 它們幾個的作用都是改變this的指向。bind 與另外兩個的區別則是前者改變this,不立即呼叫函式 而後者改變this,立即呼叫函式。以下例子在非嚴格模式下,注釋的是各個情況this的指向 let test test.foo test.foo.call null,1,...

寫給新人的call apply bind

語法 1 fun.call thisarg arg1 arg2 thisarg fun函式執行時指定的this值,可能的值為 例如 123 456functiona functionb a.call b functionb 經常會看到這種使用情況 123 45function list list 1...

理解 call, apply, bind 的用法

call 方法使用乙個指定的this值和單獨給出的乙個或多個引數來呼叫乙個函式。function list list 1,2,3,4,5 1 陣列的所有方法都是掛在array的prototype上的,如圖 而類陣列物件本身是沒有這些方法的,當然也無法呼叫 那麼想在一些物件上呼叫這個物件本身沒有的方法...