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

2,125 阅读1分钟

call的性能比apply好,尤其是在传递给函数的参数超过三个的时候

  • call和apply都是函数原型上的方法,用于改变this的指向。
    只不过call传递参数,是一个一个的传递,而apply是以数组的形式给函数传递参数
    
    fn.call(obj,params1,params2,,,,);
    fn.apply(obj,[params1,params2,params3,,,,]);
    
    在基于ES6的展开运算符也可以实现把数组中的每一项依次传递给函数,也就是说,使用展开运算符call可以实现和apply相同的效果
    
    fn.call(obj,...arr);
    
  • bind并没有把函数立即执行,只是预先处理函数内部this的指向
    
  • console.time(); 一般用于性能测试

    console.time('A');
    for (let index = 0; index < 1000; index++) {}
    console.timeEnd('A');