两者的异同
call
和 apply
都是为了改变 this
而存在的。
两者可以说是完全一致, 唯一的不同就在于接收的参数的形式不同。
- call: 接收多个参数
- apply: 接收一个数组参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| function f(){ console.log("this:"+this); for(var i in arguments){ console.log("arguments["+i+"]="+arguments[i]); } }
f(1,2,3);
f.call('我是this', 1,2,3);
var arr = [1,2,3]; f.apply('我是this', arr);
|
可以粗略的理解为如下Java代码
1 2
| public void f1(String... strs); public void f2(String[] strs);
|