简介:

这两个方法都是函数对象的方法,需要通过函数对象来调用,当函数调用call()和apply()都会调用函数执行。在调用call()和apply()可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行的this。

作用:

call()方法和apply()方法的作用相同:改变this指向。

区别:

他们的区别在于接收参数的方式不同。
call的语法:函数名.call(obj,参数1,参数2,参数3……);
apply的语法:函数名.apply(obj,[参数1,参数2,参数3……]);(哪怕只有一个参数也要用数组)

示例代码:

function fun(a,b)
 {
   //alert("我是fun函数");
   //alert(this.name);
   console.log("a="+a);
   console.log("b="+b);
   console.log(this.name);
}

var obj=
{
 name:"张恒",
 sayName:function()
   {
     alert(this.name);
   }
};

var obj2=
{
 name:"666",
 sayName:function()
   {
     alert(this.name);
   }
};

fun.call(obj,2,3);
fun.apply(obj2,[2,3]);

结果:
call结果.png

function add(c, d){ 
    return this.a + this.b + c + d; 
} 
var obj = {a:1, b:3}; 
add.call(obj, 5, 7); // 1 + 3 + 5 + 7 = 16 
add.apply(obj, [10, 20]); // 1 + 3 + 10 + 20 = 34 
Last modification:April 9, 2020
如果觉得我的文章对你有用,请随意赞赏