JavaScript——call与apply

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript——call与apply相关的知识,希望对你有一定的参考价值。

call与apply

call和apply方法可以通过函数名称来调用函数。有两个参数

call()方法与apply()方法的作用相同,他们的区别仅在于接收参数的方式不同。

【call】

调用一个对象的一个方法,以另一个对象替换当前对象。

call()方法是与经典对象冒充方法最相似的方法。他的第一个参数用作this对象,其他参数都直接传递给函数自身。

对于call而言,第一个参数是上下文对象,第二个参数是不同的函数参数。

call是通过参数列表来完成传递, 其他与apply没有区别

【apply】

应用某一对象的一个方法,用另一个对象替换当前对象。

对于apply而言,有两个参数,第一个是调用的上下文,第二个是参数数组,可以直接把argument传进去。

【call与apply的用法与区别】

function sum(num1,num2){
    return num1+num2;
}
function callSum1(num1,num2){
    //使用sum这个函数来完成一次调用,调用的参数就是函数callSum1这个函数的参数
    //apply的第二个参数代表一组参数数组
    return sum.apply(this,argument);
}
function callSum2(num1,num2){
    //第二个参数是数组
    return sum.apply(this,[num1,num2]);     
}
function callSum3(num1,num2){
    //通过参数列表来完成传递  
    return sum.call(this,num1,num2);
}

如果直接传入argument对象,或者包含函数中先接收到的也是一个数组,那么使用apply()方法比较方便,否则,选择call()更加合适。如果在不给函数传递参数的情况下,使用哪个方法都可以。

call()与apply()真正强大的地方是能够扩充函数赖以运行的作用域。使用call()(或apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。

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

关于javascript中apply()和call()方法的区别

Javascript中call和apply的区别与详解

JavaScript——call与apply

浅谈javascript中的call与apply方法

Javascript 中的 apply与call详解

Javascript中call和apply的区别与详解