zoukankan      html  css  js  c++  java
  • 继承

    分为属性和方法的继承

    组合继承:原型链继承+构造函数继承

      使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,即通过在原型上定义方法实现了函数复用,又保证了每个实例都有它自己的属性。

    1
    2
    3
    4
    5
    6
    7
    function Parent(age){
      this.name = ['mike','jack','smith'];
      this.age = age;
    }
    Parent.prototype.run = function () {
      return this.name + ' are both' this.age;
    };

    function Child(age){

      Parent.call(this,age);

    }

    Child.prototype = new Parent();

    缺点:调用2次父类的构造函数

      

    原型式继承

      借助原型并基于已有的对象创建新对象,同时还不用创建自定义类型。

    1
    2
    3
    4
    5
    function obj(o){
      function F(){}
      F.prototype = o;
      return new F();
    }

      

    寄生式继承

      把原型式+工厂模式结合起来,目的是为了封装创建的过程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
      function create(o){
        var f= obj(o);
        f.run = function () {
          return this.arr;//同样,会共享引用
        };
      return f;
      }
    </script>

      

    寄生组合继承

      通过借用构造函数来继承属性,通过原型链的混成方式来继承方法。

      基本思路:不必为了指定子类的原型而调用超类型的构造函数。本质上,使用寄生式继承来继承超类型的原型,然后再将结果指定给子类型的原型。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function object(o) {
        function F() {}
        F.prototype = o;
        return new F();
    }
     
    function inheritPrototype(subType, superType) {
        var prototype = object(superType.prototype);  //创建对象
        prototype.constructor = subType;              //增强对象
        subType.prototype = prototype;                //指定对象
    }

      

  • 相关阅读:
    mysql 取年、月、日、时间
    第4步:创建RAC共享磁盘组
    第3步:添加用户与安装路径
    第2步:配置系统安装环境
    第1步:安装虚拟机+配置网络
    nodejs rar/zip加密压缩、解压缩
    使用shell脚本守护node进程
    抒发一下这些天用django做web项目的一些体会
    编写gulpfile.js文件:压缩合并css、js
    在NodeJS中使用流程控制工具Async
  • 原文地址:https://www.cnblogs.com/xfcao/p/9999114.html
Copyright © 2011-2022 走看看