JS陣列中的apply含義

史前圖騰發表於2017-12-13

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:這個是一個引數列表  
複製程式碼

相關文章