既然有apply 为啥还要有 call?
今天在学习 apply 跟 call,看了网上几篇文章, 然后了解到apply跟call的区别是 接受参数的方式不太一样: func.call(this, arg1, arg2) func.apply(this, [arg1, arg2]) 其中 this 是你想指定的上下文,这第一个参数两者是一样的, 但是后面的参数,call 需要把其按顺序传递进去(arg1, arg2),而 apply 则是把参数放在数组里([arg1, arg2])。 我想问的是:
- 除了这个区别,这两个方法在应用场景上还有啥不一样的?
- 如果没有,既然有apply为啥还要用call,都放数组里面不就完了吗?或者是有其他方面的考虑。
6 回复
语法糖而已
比如,参数数组如果是动态的, 无法确定有多少个的, 那么 call 就无法使用了, apply就有用了
call 的性能要好于 apply, fn() > fn.call() > fn.apply()
我觉得。。。。其实还有一个很重要的因素,就是 js 当初设计时很不严谨。。或许是开发者忘记了他曾经设计了其中一个呢。。。
参数传递不一样