.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直接將這些參數放到一個數組中再傳遞,最後借用參數列表是同樣的。數組