call和apply区别是什么,哪个性能更好一些?

Posted Smile沛沛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了call和apply区别是什么,哪个性能更好一些?相关的知识,希望对你有一定的参考价值。

call和apply区别是什么,哪个性能更好一些?

call和apply都是function原型上的方法,用于改变this指向的,唯一的区别就是传入参数的形式不一样,call是一个一个传参,而apply把所有参数用数组形式传。bind与他们类似(传参数也是一个个传参),都是改变this指向,只是预先处理函数,但是并不会立即执行。 经过测试,call比apply性能要好一些。

//使用apply场景
let arr = [10,20,30],
		obj = {};
		
function fn(x,y,z){
  
}

fn.apply(obj,arr)		//x,y,z分别为10 20 30
fn.call(obj,...arr)		//基于ES6的展开运算符,可以展开依次传递给函数

自己实现性能测试(只供参考,任何代码测试都跟测试环境有关。CPU、内存、GPU等电脑当前性能不会有相同的时间)。console.time可以测出一段程序执行的时间。在火狐浏览器中可以安装firebug插件取监控更精确的时间

console.time('A')		//A相当于给时间测试起个名字
for(let i = 0;i<100000;i++){
  
}
console.timeEnd('A')

以上是关于call和apply区别是什么,哪个性能更好一些?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中call和apply的区别与详解

Js中call和apply的区别和用法是啥?

在JS中,call()方法和apply()方法到底该怎么应用?

call和apply区别

js中的this

简述JS中 appy 和 call 的详细用法