1. 程式人生 > >函數的call()方法和apply()方法

函數的call()方法和apply()方法

spa 概念 函數 對象 apply() ole javascrip 參數 blog

  閱讀各種框架的源碼apply和call方法肯定經常看到,好好理解一下概念至關重要。

  JavaScript中的函數也是對象,和其他JavaScript對象沒什麽兩樣,函數對象也可以包含方法。其中的call()方法和apply()方法可以間接調用函數。兩個方法都允許顯式指定調用所需的this值,也就是說,任何函數都可以作為任何對象的方法來調用,哪怕這個函數不是那個對象的方法。

  兩個方法都可以指定調用的實參。call()方法使用它自有的實參列表作為函數的實參,apply()方法則要求以數組的形式傳入參數。

  call()方法和apply()方法的第一個實參是要調用函數的母對象,它是強調上下文

,在函數體內通過this來獲得對它的引用。

function a1(i,j){
    var a = 1;
    console.log(a);
    console.log(i,j);
}
function b1(i,j){
    var b = 2;
    console.log(i,j);
    this(i,j);
}
b1.call(a1,111,222);   // call()方法調用
// b1.apply(a1,[111,222]); apply()方法調用,一樣的,只是傳參形式不一樣

函數的call()方法和apply()方法