call和apply
call和apply方法作为为修改方法内部this的指向
var obj = {
name : "obj"
}
function sum(a, b){ console.log(this); } sum(); //window.test(); 返回window对象
sum.apply(obj); //返回obj对象
call和apply区别在于传入的参数不同,call方法可以传入多个参数(object,,,),apply方法只能传入两个参数(object,array)。第一个引入的参数object也就是修改this指向的参数
var obj = { name : "obj" } function sum(a , b){ console.log(a + b); console.log(this); } sum.call(obj, 1, 2); //call方法可传入多个参数 var arr = [2, 3]; sum.apply(obj, arr); //apply方法传入两个参数。第二个为数组,依次传入调用方法的形参
//真数组转化为伪数组 //1.通过数组调用push方法 //2.通过apply方法,把this转向为obj对象 //3.取出arr数组元素传递给push方法的形参 var arr = [2, 3]; [].push.apply(obj, arr); console.log(obj); //输出{0: 2, 1: 3, name: "obj", length: 2}