位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 函数 使用 call 和 apply

提问人:刘团圆发布时间:2020-11-25

■知识点

call和apply是Function的原型方法,它们能够将特定函数当作一个方法绑定到指定对象上,并进行调用。具体用法如下:

    function.call(thisobj, args...) 

    function.apply(thisobj, [args])


    其中,function表示要调用的函数。参数thisobj表示绑定对象,即this指代的对象。参数args表示要传递给被调用函数的参数。call方法能接收多个参数列表,而apply方法只能接收一个数组或者伪类数组,数组元素将作为参数列表传递给被调用的函数。

■实例设计

【示例1】下面使用apply方法设计一个求最大值的函数。

function max(){                                   //求最大值函数

    var m = Number.NEGATIVE INFINITY;             //声明一个负无穷大的数值

    for( var i = 0; i < arguments.length; i ++ ){ //遍历所有实参

        if( arguments[i] > m )                    //如果实参值大于变量m,

        m = arguments[i];                         //则把该实参值赋值给m

    }

    return m;                                     //返回最大值

}

var a = [23, 45, 2, 46, 62, 45, 5.6, 63];         //声明并初始化数组

var m = max.apply( Object, a );                   //动态调用max,绑定为Object的方法

console.log( m );                                 //返回63

    在上面的示例中,设计定义一个函数max(),用来计算所有参数中最大值参数。首先,通过apply方法,动态调用max()函数,然后,把它绑定为Object对象的一个方法,并把包含多个值的数组传递给它。最后,返回经过max()计算后的最大数组元素。

    如果使用call方法,就需要把数组所有元素全部读取出来,再逐一传递给call方法,显然这种做法不是很方便。

【示例2】使用call和apply方法可以把一个函数转换为指定对象的方法,并在这个对象上调用该方法。当函数动态调用之后,这个对象的临时方法也就不存在了。

function f() {

return "函数 f";

}

var obj = { };

f.call( obj );               //把函数f绑定为obj对象的方法

console.log( obj.f())        //再次调用该方法,则返回编译错误

■小结

call和apply方法的主要功能包括如下。

    调用函数。

    修改函数体内的this指代对象。

    为对象绑定方法。

    跨越限制调用不同类型的方法。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部