call与apply用法

使用哪个对象去调用相应的方法;

var name="window";

var obj={

  name:"obj"

}

function test(){

  console.log(this.name);

}

test();

test.call(obj);

test.apply(obj);

上面两行代码就是使用obj对象进行调用test方法;所以输出的是obj,而不是window

call(obj,[arg0],[arg1],.....);//参数可传可不传

apply(obj,[,arg0,arg1]);//参数可传可不传

两个调用方式基本相同;

利用apply很容易可以把一个数组传递给一个可变参数方法;

如我们要调用js api中的Math.max(x...);

var arr=[1,4,2,45,12,345];

Math.max.apply(null,arr);