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]);
  • 相关阅读:
    ext数据库读取动态添加window组件
    sony e系列笔记本的OFFICE的序列号
    ext panel 移除item失效的解决办法
    ExtJS xtype class对照表
    Dynamic Form interacting with an embedded Grid
    extjs动态列--editorGridPanel(2.2)
    Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
    ExtJS 动态增加与删除items,动态设置textField可见与否
    Extjs formPanel 显示图片 + 上传
    EXTJS的数据存储机制
  • 原文地址:https://www.cnblogs.com/fighxp/p/7722241.html
Copyright © 2011-2022 走看看