call 和 apply 的區別

Function.prototype.call 和 Function.prototype.apply都是很是經常使用的方法。他們的做用如出一轍,區別僅在於傳入參數形式的不一樣。
數組

apply

apply 接受兩個參數,第一個參數制定了函數體內 this 對象的指向,第二個參數爲一個帶下標的集合,這個集合能夠爲數組,也能夠爲類數組,apply 方法吧這個集合中的元素做爲參數傳遞給調用的函數:bash

var func = function( a, b, c ) {
    alert([ a, b, c ]);
}
func.apply( null, [ 1, 2, 3 ]);
複製代碼

1.這段代碼,運行了函數 func, 而且把數組[ 1, 2, 3 ]裏面的數做爲 func 的參數傳進去。
2.將 func 的 this 指向 null,因此 func 指向默認宿主對象 windowapp

call

call傳入的參數數量不固定,跟 apply 類似,第一個參數是 this 的指向,區別是從第二個參數開始日後,每一個參數被依次傳入函數:函數

var func = function( a, b, c ) {
    alert([ a, b, c ]);
}
func.call(null, 1, 2, 3 );
複製代碼
相關文章
相關標籤/搜索