- Function.prototype.apply和Function.prototype.call 的作用是一样的,区别在于传入参数的不同;
- 第一个参数都是,指定函数体内this的指向;
- 第二个参数开始不同,apply是传入带下标的集合,数组或者类数组,apply把它传给函数作为参数,call从第二个开始传入的参数是不固定的,都会传给函数作为参数。
- call比apply的性能要好,平常可以多用call, call传入参数的格式正是内部所需要的格式,参考call和apply的性能对比
两者区别在参数传递格式:
apply( ):两个参数,第一个是运行函数的作用域,第二个是参数数组(可以是array的实例,或者arguments对象)。
call( ):参数个数不定,第一个是运行函数的作用域,其余传递给函数的参数逐个列出。
apply()和 call()的2个作用:给函数传参、扩充作用域;
至于是使用 apply( )还是 call( ),完全取决于你采取哪种给函数传递参数的方式最方便。