apply() 的作用是改變執行的執行環境。 就是說陣列 沒有min這個方法,但是Math物件可以求最小值,有min這個方法 例如 var a = Math.min(3,2,1,4),那麼a將賦值為1 一個陣列想使用Math物件的min方法,就需要使用call/apply來改變執行環境了。 Math.min(3,2,1,4)等價於 Math.min.apply(null, [3,2,1,4]),null是上下文,傳入的物件對應函式中的this,min函式並沒有使用this,因此這裡可以為null,[3,2,1,4]是給min函式的引數列表。
var A = {
a: 1
}
A.add = function( b ){
console.log(this.a + b); // 這裡的this是A
}
A.add(3); // => 4
var B = {
a: 4
}
A.add.apply(B,[3]); // => 7, add函式中的this 換成了B
複製程式碼
Function.apply(obj,args)方法能接收兩個引數
obj:這個物件將代替Function類裡this物件
args:這個是陣列,它將作為引數傳給Function(args-->arguments)
**********************************
call:和apply的意思一樣,只不過是引數列表不一樣.
Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj:這個物件將代替Function類裡this物件
params:這個是一個引數列表
複製程式碼