1. 程式人生 > >call() 和 apply() 的區別?

call() 和 apply() 的區別?

圖片 obj width glob info 函數 foo mage ()

相同點:兩個方法產生的作用是完全一樣的,都用來改變當前函數調用的對象。

不同點:調用的參數不同,比較精辟的總結:

foo.call(this,arg1,arg2,arg3) == foo.apply(this, arguments)==this.foo(arg1, arg2, arg3)

1.call的使用

call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。如果沒有提供 thisObj 參數,那麽 Global 對象被用作 thisObj。

技術分享圖片

2.apply()

apply與call的功能幾乎一樣,第一個參數意義都一樣,只是第二個參數有點不同apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,call從第二個參數開始,依次傳值給調用函數的參數

技術分享圖片

call() 和 apply() 的區別?