1. 程式人生 > >apply和call

apply和call

apply和call是函式傳參的兩種方式,但是他們常用的主要功能個人理解認為應該是擴充套件作用域。

相同之處:都表示呼叫一個物件的一個方法,用另一個物件替換當前物件。例如:B.apply(A, arguments);即A物件應用B物件的方法。等同於B.call(A, args1,args2)。

不同之處:apply只接受兩個引數,一個是在其中執行函式的作用域(即this),另一個是引數陣列。

而call第一個引數和apply一樣都是在其中執行函式的作用域,另一個是引數數列。這個方法主要用在js物件各方法相互呼叫的時候,使當前this例項指標保持一致,或者在特殊情況下需要改變this指標。如果沒有提供thisObj引數,那麼 Global 物件被用作thisObj。