zoukankan      html  css  js  c++  java
  • JS:call()和apply的区别

    每个函数都包含两个非继承而来的方法:call()和apply();

    call()方法:参数,第一个是作用域中调用函数(this),其余是参数直接传给函数 扩大作用域,传递参数时,参数必须逐个列出。

    window.color = "red";
    var o = {color:"blue"};
    function sayColor () {
    alert(this.color);

    }
     sayColor(); //red
     sayColor.call(this);//red
     sayColor.call(window); //red
     sayColor.call(o);//blue

     

    function sum(num1, num2){
    return num1 + num2
    }

    function callSum(num1, num2){
    return sum.call(this,num1,num2);
    }
    alert(callSum(10,10)); //20

    apply()方法也接受两个参数:

              一个是在其中运行函数的作用域(this);

              另一个是参数数组(可以是Array的实例,如[num1,num2]),也可以是arguments对象;

     function callSum1(num1,num2){
       return sum.apply(this,arguments);
     }

     function callSum2(num1, num2){
       return sum.apply(this,[num1,num2]);
     }
     alert(callSum1(10,10));
     alert(callSum2(10,10));

    applay()和call()两者的区别:

    applay()和call()相同点:用途都是在特性的作用域中调用函数(设置函数体内this队形的值)
    两者的不同点:接受的第二个参数不同,call()接受的参数必须逐个列举出来,而applay(),可以是arguments对象也可是是Array数组实例。

     

  • 相关阅读:
    一个js选项卡
    郁闷
    Object Literals
    typeof and instanceof
    比较好用的日期控件
    很炫的分页
    [转]ASP.NET Web.config配置文件的基本使用方法
    正则匹配 获取QQ空间日志
    漂浮窗(层)JS
    ASP.NET页面事件执行过程(完整版)
  • 原文地址:https://www.cnblogs.com/wine/p/5063198.html
Copyright © 2011-2022 走看看