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

参考链接:

1、如何理解和熟练运用js中的call及apply? - 知乎

上次更新: 4/22/2019, 6:36:23 PM