call和apply的区别
call和apply的作用一样,都是改变函数中this的作用域,那如何理解它们呢?可以这样记忆:
猫吃鱼,狗吃肉,奥特曼打小怪兽。
有天狗想吃鱼了
猫.吃鱼.call(狗,鱼)
狗就吃到鱼了
猫成精了,想打怪兽
奥特曼.打小怪兽.call(猫,小怪兽)
就这样记住了。
两者只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。如下:
Math.max.apply(null, [1,2,3])
// 3
Math.max.call(null, ...[1,2,3])
// 3
1
2
3
4
2
3
4
参考链接: