跳到主要内容
CNode

既然有apply 为啥还要有 call?

问答
Llei2231发布于 9 年前最后回复 9 年前
653050

今天在学习 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)

F
frank320#69 年前

参数传递不一样

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

A
atian25#49 年前

image.png

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

1
151263#29 年前

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

A
atian25#19 年前

语法糖而已

参与回复

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