.call()和.apply()相同點與不一樣點

.call()和.apply()相同點與不一樣點javascript

function add(a,b) { 
     alert(a+b); 
} 
function sub(a,b) { 
     alert(a-b); 
}

add.call(sub,3,1);

  

這個例子中的意思就是用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,因此運行結果爲:alert(4);java

function add(a,b) { 
     alert(a+b); 
} 
function sub(a,b) { 
     alert(a-b); 
}

add.apply(sub,[「3」,「1」]);

  

相同點:兩個方法產生的做用是相同的,簡單來講call和apply就是借用別人的方法來調用,跟調用本身的同樣。
不一樣點:方法傳遞的參數不一樣,call和apply方法除了第一個參數,即執行時上下文對象相同外,call方法的其餘參數將依次傳遞給借用的方法做參數,而apply就兩個參數,第二個參數做爲一個數組的形式傳遞。能夠說成,從第二個參數開始,call方法參數依次傳遞給借用方法做爲參數,而apply直接將這些參數放到一個數組中再傳遞,最後借用參數列表是同樣的。數組

相關文章
相關標籤/搜索