基礎觀念: Function.call 和 Function.apply 的區別
Function.call vs Function.apply
call
和 apply
都是 Function.prototype
的方法,是 JavaScript 引擎內在就實現了,也就是說所有的 Function 實體,都有 call 和 apply 方法。
區別它們的差異可以簡單的用一段程式碼理解:
this.fun(arg1, arg2) == fun.call(this, arg1, arg2) == fun.apply(this, arguments)
其實你應該已經發現
有差嗎?call 和 apply 只有差在傳遞參數的方式
不同而已
語法
// fun.call
someMethod.call(thisArg[, arg1[, arg2[, ...]]])
// fun.apply
someMethod.apply(thisArg, [argsArray])
- thisArg: 呼叫
someMethod
傳進去當作this
的值。
在
非嚴格模式 (non-strict mode)
,如果你傳進去的 thisArg 為null
orundefined
,則this
值將指到全域變數
Reference
Author Yuyu, Lin
LastMod 2018-03-08