1. 程式人生 > >function apply()與call()

function apply()與call()

apply:呼叫一個物件的一個方法,用另一個物件替換當前物件。例如:B.apply(A, arguments);即A物件應用B物件的方法。

call:呼叫一個物件的一個方法,用另一個物件替換當前物件。例如:B.call(A, args1,args2);即A物件呼叫B物件的方法。

都“可以用來代替另一個物件呼叫一個方法,將一個函式的物件上下文從初始的上下文改變為由thisObj指定的新物件”。

 

實際上,apply和call的功能是一樣的,只是傳入的引數列表形式不同。

function add (a, b) {
  console.log(this)
  return a + b
}
function sub (a, b) {
  console.log(this)
  return a - b
}
var a1 = add.apply(sub, [4, 2])// 執行add函式,函式內部this指向sub 
//var a1 = add.call(sub,4,2); //同上
var a2 = sub.apply(add, [4, 2])// 執行sub函式,函式內部this指向sub

alert(a1) //6
alert(a2) //2