• js 继承


    /**
     * 组合继承
     */
    function Super(name) {
        this.name = name || '';
    }
    Super.prototype.age = 23;
    
    function Sub(name) {
        Super.call(this, name);
        this.eat = function() {
            return this.name + 'eat';
        }
    }
    Sub.prototype = new Super();
    Sub.prototype.constructor = Sub
    var sub = new Sub('xiaoming');
    console.log(sub);

      

    /**
     * 寄生组合继承
     */
    function Super(name) {
        this.name = name || '';
    }
    Super.prototype.age = 23;
    
    function init(Sub, Sup) {
        var proto = Object(Sup.prototype);
        proto.constructor = Sub;
        Sub.prototype = proto;
    }
    function Sub(name) {
        Super.call(this, name);
        this.eat = function() {
            return this.name + 'eat';
        }
    }
    init(Sub, Super);
    // Sub.prototype = new Super();
    // Sub.prototype.constructor = Sub
    var sub = new Sub('xiaoming');
    console.log(sub);
    

      

    1、原型链继承

    2、构造函数继承

    3、组合继承

      其实就是结合了原型链继承和构造函数的继承

      缺点:之类继承父类的过程需要两次调用父类的构造器,这其实很浪费。

    4、组合寄生继承

      优点:解决了组合继承的缺点

      缺点:复杂,而且当你改变子类的prototype时,父类的prototype也会改变。

  • 相关阅读:
    PE文件解析器的编写(二)——PE文件头的解析
    PE解析器的编写(一)——总体说明
    PE文件详解(九)
    PE文件详解(八)
    06_建造者模式
    05_模板方法模式
    04_抽象工厂模式
    03_简单工厂模式(静态工厂模式)
    02_工厂方法模式
    01_单例模式
  • 原文地址:https://www.cnblogs.com/pengwenfan/p/9012913.html
Copyright © 2020-2023  润新知