call和apply

Posted renhaooh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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}

 

 

以上是关于call和apply的主要内容,如果未能解决你的问题,请参考以下文章

apply()方法和call()方法

关于call和apply的使用和区别

call()和apply()方法

关于JS中apply和call详细解答

奇妙JS代码系列call,apply,bind用处整理

call 和 apply方法解析