大體上說,apply方法和call方法的功能就是改變當前函數的this指向;
具體用法如下:
Function.call(obj[, param1[, param2[, [,...paramN]]]]);
Function.apply(obj[, argArray]);
可以看到,call和apply的區別主要是傳入的參數類型不同:
- apply()方法接收兩個參數,一個是函數運行的作用域(
this
),另一個是參數數組。 - call()方法不一定接受兩個參數,第一個參數也是函數運行的作用域(
this
),但是傳遞給函數的參數必須列舉出來。
備註:
一個關於在math.Max()和math.Min()函數中的應用:
因爲Math.max
參數裏面不支持Math.max([param1,param2])
,也就是數組,但是它支持Math.max(param1,param2,param3…)
,所以可以根據apply
來解決:
var array = [1, 2, 3];
var max = Math.max.apply(null, array);
console.log(max);//3
Math.min同理