call apply 的基本用法與區別
阿新 • • 發佈:2018-12-19
知識點:apply為應用的意思, 函式的arguments代指入參
1.基本應用
var a = function () { console.log(this.dog) }; var b = {}; b.dog = 'yyy' a.apply(b) //輸出了yyy
a.apply(b)意思為將a方法應用到b上;
基本用法上,call用法與apply基本一致
a.call(b) //輸出了yyy
var a = function () { this.dog = 'xxx'; console.log(this.dog) }; var b = {}; b.dog = 'yyy' a.apply(b) //輸出了xxx (b的dog被修改成xxx了)
2.區別
var a = function () { console.log(arguments); }; var b = {}; var c = [1, 2]; a.call(b, c); // a.apply(b, c); //
a.apply(b,[1,2]); a.call(b,[1,2])這兩種寫法都可以;但是apply會把陣列引數當成N個入參傳入,call會當成一個入參傳入。
a.call(b,{1:1,2:2});這種寫法也可以(call接收物件),但是apply只能接收陣列