zoukankan      html  css  js  c++  java
  • 理想的继承范式——寄生组合式继承

     1 window.onload = function() {
     2     var person1 = new SubType("Gee", 20);
     3     var person2 = new SubType("Key", 21);
     4 
     5     person1.colors.push("yellow");
     6     alert("person1: " + person1.colors);    // red, blue, green, yellow
     7     alert("person2: " + person2.colors);    // red, blue, green
     8 
     9     person1.sayName();    // Gee
    10     person2.sayAge();    // 21
    11 };
    12 
    13 function object(o){
    14     function F() {}
    15     F.prototype = o;
    16     return new F();
    17 }
    18 
    19 /**
    20  * 继承超类型的方法
    21  * @param  {Object} subType   子类型
    22  * @param  {Object} superType 超类型
    23  * @return {null}
    24  */
    25 function inheritPrototype(subType, superType) {
    26     var prototype = object(superType.prototype);    // 创建对象
    27     prototype.constructor = subType;    // 增强对象
    28     subType.prototype = prototype;    // 指定对象
    29 }
    30 
    31 function SuperType(name) {
    32     this.name = name;
    33     this.colors = ["red", "blue", "green"];
    34 }
    35 
    36 SuperType.prototype.sayName = function() {
    37     alert(this.name);
    38 };
    39 
    40 function SubType(name, age) {
    41     SuperType.call(this, name);    // 继承属性,并传递参数,子类型将具有独立属性而非共享属性
    42 
    43     this.age = age;
    44 }
    45 
    46 inheritPrototype(SubType, SuperType);
    47 
    48 SubType.prototype.sayAge = function () {
    49     alert(this.age);
    50 };
  • 相关阅读:
    IO模型
    Redis的cluster模式
    #4789. 啊孤独感放辣椒
    #4754. 旅途
    #3189. 八纵八横(c)
    洛谷P2624 [HNOI2008]明明的烦恼
    CF938G Shortest Path Queries
    [CTSC2010]珠宝商
    洛谷P1903 [国家集训队]数颜色 / 维护队列
    AtCoder3611 Tree MST
  • 原文地址:https://www.cnblogs.com/tinyTea/p/9945334.html
Copyright © 2011-2022 走看看