函数属性call和apply

call和apply都是指一个函数调用另一个函数的值,可以不用再定义函数方法,call和apply的区别是:apply的第二个参数是指数组,call的第二个参数是指一列数值
eg:
未用call属性

      var color = "red";
      function showColor(){
        alert(this.color);
      }

      function Circle(color){
        this.color=color;
        this.showColor=showColor;
      }

      var c = new Circle('yellow');
      c.showColor();
      showColor();//red

用了call方法进行调用

     var color = "red";
      function showColor(){
        alert(this.color);
      }

      // 创建了一个类,有一个color的属性和一个show的方法
      function Circle(color){
        this.color=color;
      }

      var c = new Circle('yellow');
      showColor.call(this); //red
      showColor.call(c); // yellow

apply的用法

    function sum(num1, num2){
       return num1+num2;
     }
     function callSum1(num1, num2){
       //使用sum这个函数来完成一次调用,调用的参数就是callSum这个函数的参数
       // apply的第二个参数表示一组参数数组
       return sum.apply(this,arguments);
     }
     function callSum2(num1,num2){
        // 关键就是第二个参数是数组
        return sum.apply(this,[num1,num2])
     }
     alert(callSum1(12,22));  //34
     alert(callSum2(22,32));  //54

call的用法

 function callSum3(num1,num2){
    //call是通过参数列表来完成传递,其他和apply没有任何区别
    return sum.call(this,num1,num2);
 }

 alert(callSum3(2,4));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值