CNode

既然有apply 为啥还要有 call?

问答
Llei2231发布于9 年前最后回复9 年前6 回复5257 浏览0 收藏

今天在学习 apply 跟 call,看了网上几篇文章, 然后了解到apply跟call的区别是 接受参数的方式不太一样: func.call(this, arg1, arg2) func.apply(this, [arg1, arg2]) 其中 this 是你想指定的上下文,这第一个参数两者是一样的, 但是后面的参数,call 需要把其按顺序传递进去(arg1, arg2),而 apply 则是把参数放在数组里([arg1, arg2])。 我想问的是:

  1. 除了这个区别,这两个方法在应用场景上还有啥不一样的?
  2. 如果没有,既然有apply为啥还要用call,都放数组里面不就完了吗?或者是有其他方面的考虑。
查看回复

回复 (6)

A
atian25#1·9 年前

语法糖而已

1
151263#2·9 年前

比如,参数数组如果是动态的, 无法确定有多少个的, 那么 call 就无法使用了, apply就有用了

call 的性能要好于 apply, fn() > fn.call() > fn.apply()

A
atian25#4·9 年前

image.png

我觉得。。。。其实还有一个很重要的因素,就是 js 当初设计时很不严谨。。或许是开发者忘记了他曾经设计了其中一个呢。。。

F
frank320#6·9 年前

参数传递不一样

参与回复
登录后即可参与回复。登录