JavaScript 綁定函數方式比較 - .Bind() .Apply() .Call()

javascript

JavaScript 在呼叫 Function 時,有三種方式可以改變其範疇,分別為 .bind(),.call(), .apply(), 而這三種又有些許的差異:

function .bind()

.bind() 不會立即執行 function,並設定 this 範疇與傳入參數。傳入第一個參數是 scope,指定 function 內 this 的範疇。

1
func.bind( this, 1 ,2 ,3 ) ; // 不會立即執行

function .call()

.call() 呼叫 function,並設定 this 範疇與傳入參數。傳入第一個參數是 scope,指定 function 內 this 的範疇。

1
func.call( this, 1 ,2 ,3 ) ; // 逐一傳入參數 (立即執行)

function .apply()

.apply() 呼叫 function,並設定 this 範疇與傳入參數。傳入第一個參數是 scope,指定 function 內 this 的範疇。而參數是統一用一個陣列包起來,apply 會自行拆開傳入。

1
func.apply( this, [ 1, 2, 3 ] ); // 參數統一用 array 傳入 (立即執行)
分享到