zoukankan      html  css  js  c++  java
  • call( )、apply( )

    call( )和apply( )都是用于改变函数执行时的上下文,唯一最大区别在于传入参数的形式不同

    这两个函数都是函数的方法,只有函数能够打点调用call()、apply(),表示用指定的上下文执行这个函数。

    <script type="text/javascript">
    
        function fun(){
            alert(this.age);
        }
    
        var obj = {
            "name" : "小明",
            "age" :12
        }
    
        fun.call(obj);
        fun.apply(obj);
    
    </script>    
    • call( )

    call( )函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次执行时functionObject函数内部的this指针引用。

    语法:

    functionObject.call( [ thisObj [, arg1 [, arg2 [, args...]]]] )
    • apply( )

    apply( )函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次函数执行时函数内部的this指针引用。

    apply( )函数的用途和call( )函数一样,区别在于传参数,call()函数是将Function对象的参数一个个分别传入,apply()函数是将Function对象的参数以一个数组或arguments对象的形式整体传入。

    语法:

    functionObject.apply( [ thisObj [, argsArray ]] )

    如果提供了argsArray参数,则该参数必须是一个数组,或者arguments对象。数组中的每个元素(arguments对象中的每个属性0...n)将按照顺序作为参数传入该函数。

    如果提供了argsArray参数,则必须提供thisObj参数。

    例子对比:

    <script type="text/javascript">
    
        function fun(a,b,c){
            alert(a+b+c);
        }
    
        var obj = {
            "name" : "小明",
            "age" :12
        }
    
        fun.call(obj,10,11,5); //使用call函数时传入可连续传入多个参数
        fun.apply(obj,[10,15,5]);// 使用apply函数必须传入数组的形式
    </script>   

    apply( ) 函数妙用:

    apply可以接受一个数组当做函数的“罗列”的参数。

    例子:使用apply( )传入一组数组,罗列成散列的参数,可以直接输出数组中最大值

    Math.max.apply(window,[4,342,345,234,34,56,234]);
  • 相关阅读:
    一步一步学数据结构之(动态申请二维数组)
    运维自动化
    oracle查看登录到oracle服务器的客户端ip
    权限
    windows下使用SQLPLUS制作BAT执行SQL文件
    rsyslog传输type
    C经典实例
    mysql导出数据库数据及表结构
    解决oracle11g无法导出空表问题
    opennebula onenebula
  • 原文地址:https://www.cnblogs.com/fighxp/p/7722241.html
Copyright © 2011-2022 走看看