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

    先来个each()函数:

    var each=function(array,fn){

      for(var index in array){

        //遍历array,fn这个函数未确定

      }

    }

    *假如我们需要定义一个形如each(array,fn)的函数,这个函数可以自动迭代array数级元素,而fn函数则负责对数组元素进行处理--此时需要在each函数中调用fn函数,但目前fn函数并未确定,因此无法采用直接调用的方式来调用fn函数,这时就需要用:

    1 call()方法调用函数;

    1.1 完善each,代码如下

    var each=function(array,fn){

      for(var index in array){

          fn.call(null,index,array[index]);

      }

    }

    each([14,20,3],function(index,ele){

      document.write("第"+index+"个元素是:"+ele+"<br />");

    });

    1.2 语法解析:函数引用.call(调用者,参数1,参数2....);

    2 以apply()方法调用函数与call()方法类似,区别在于:

    >>通过call()调用函数时,必须在括号中详细地列出每个参数

    >>通过apply()动态地调用参数时,可以在括号中以arguments来代表所有参数

    代码如下:

    2.1 var myfun=function(a,b){

      alert("a的值是:"+a+" b的值是:"+b);

    }

    myfun.call(window,12,23);

    var example=function(num1,num2){

      myfun.apply(this.arguments);

    }

    example=(20,40);

    myfun.apply(window,[12,23]);

    2.2 语法解析:函数引用.apply(调用者,arguments);

    对比上面代码:

    当通过call()动态地调用方法时,需要为被调用方法逐个地传入参数;

    当通过apply()动态地调用方法时,能以arguments一次性地传入多个参数

    需要指出的是:arguments可代表调用当前函数时传入的所有参数,因此arguments相当于一个数组

  • 相关阅读:
    SAR图像处理 MSTAR数据库利用问题
    python 获取系统环境变量 os.environ and os.putenv
    python 模块中的 __init__.py __main__.py
    pylint python2.7 安装记录
    Python--字典
    哈希表
    AC自动机模板
    平衡树(Splay)模板
    矩阵快速幂 模板
    非递归线段树
  • 原文地址:https://www.cnblogs.com/lxy061654/p/11166912.html
Copyright © 2011-2022 走看看