call
和 apply
都是 JavaScript 中 Function 对象的方法,用于改变函数内部的 this
值并调用函数。但它们的参数传递方式不同:
call():
- 使用方法是
func.call(thisArg, arg1, arg2, ...)
。 - 第一个参数指定
this
的值,后面的参数将依次传递给被调用的函数。
- 使用方法是
apply():
- 使用方法是
func.apply(thisArg, [argsArray])
。 - 第一个参数同样指定
this
的值,第二个参数是一个数组,数组中的元素将作为参数传递给被调用的函数。
- 使用方法是
性能方面
在性能方面,call
和 apply
的不同之处基本可以忽略,因为它们的实现方式都是基于调用函数。如果函数参数的数量不固定且较多,使用 apply
可能会更方便;如果参数数量已知且固定,使用 call
会更直接。
一般来说,性能差异不大,实际选择应主要基于代码的可读性和具体的使用场景。