• apply()方法和call()方法


    obj.func.call(obj1)       //是将obj1看做obj,调用func方法,将第一个参数看做函数调用的对象,可以看做,将obj的方法给obj1使用

    ECMAScript规范给所有函数都定义了call()与apply()方法。

    注意:call()与apply()的第一个参数都是需要调用的函数对象。

         在函数体内this的值就是指向这个调用者,也就是第一个参数,剩余的参数都是需要传递给函数的值

         call()与apply()的不同在于,剩余的参数,call(),剩余的参数可以是任意的值,而apply()剩余的值只能是数组。

    例如:function add(a,b){  

        return a+b;

      }

      function sub(a,b){

      return a-b;

    }

    apply()的用法:

      var a1=add.apply(add,[4,2]);

      var a2=sub.apply(sub,[4,2]);

    call()的用法:

      var a1=add.call(add,4,2);

      var a2=sub.call(sub,4,2);

    Js认为他自己是万能的,既然高级语言能够继承,我JS也可以继承

      function fun1(){

      this.a=123;

      this.add=function(){

        return this.a;

      }

      function fun2(){

        this.a=456;

      }

    }

      var a1=new fun1();

      var a2=new fun2();

      var a=a1.add.call(a2); //输出的是456

    这里就是把f1的方法拿给f2来使用,f2便可以使用f1中所有的方法,这不正是高级语言中继承的概念吗,而且还可以模仿高级语言中的多继承

    function fun1(){

      this.add=function(){

        return this.a+this.b;

      }

      this.fun2=function(){

        return this.a-this.b;

      }

      funtion fun3(){

        this.a=10;

        thi.b=2;

        fun1.call(this);

        fun2.call(this);

      }

    }

    var f3=new fun3();

    console.log(f3.add())  //13;

    console.log(f3.sub())  //8

  • 相关阅读:
    博客园的第一篇博客
    I-如何办好比赛
    塞特斯玛斯塔
    字典序最大的子序列
    百练POJ 1657:Distance on Chessboard
    百练POJ2750:鸡兔同笼
    HDU3790最短路径问题
    HDU 2544最短路Dijkstra算法
    快速幂【倍增+二分】
    树的高度
  • 原文地址:https://www.cnblogs.com/makan/p/4709228.html
Copyright © 2020-2023  润新知