JS中call,apply的区别及其用法

共同点

  • 可以改变函数的this指向   

    call和apply的第一个参数为this的指向,传null时,this指向window   

var obj = {name: 'lisi'}
function fn() {
   console.log(this)  
}
fn.call(null)    //this指向window
fn.apply(null)   //this指向window
fn.call(obj)     //this指向obj
fn.apply(obj)    //this指向obj

不同点  

  • call传参形式是,从第二个开始一个一个传

  • apply的第二个参数为数组,数组的每一项为函数的参数

fn.call(null,1,2,3)   
fn.apply(null,[1,2,3])   

应用

  • 伪数组变为真数组  [].slice.call(eles);  
原文地址:https://www.cnblogs.com/cq-lcq/p/8483515.html