• 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]);
  • 相关阅读:
    Linux(Debian、Ubuntu、Deepin等)安装最新版Chrome Unstable
    JavaScript根据经纬度获取距离信息
    CSS滚动条样式定制
    Linux下 Apache Vhost 配置 防止403
    Unity减小安装包的体积(210MB减小到7MB)
    Ubuntu17.04配置LNMP(Nginx+PHP7+MySQL)简单教程 快速 易学 简单易懂
    Yii2项目实现Markdown功能 在线Markdown编辑器
    Gradle全局代理配置
    Angular4.0从入门到实战打造在线竞拍网站学习笔记之三依赖注入
    Python使用PyMysql操作数据库
  • 原文地址:https://www.cnblogs.com/fighxp/p/7722241.html
Copyright © 2020-2023  润新知