zoukankan      html  css  js  c++  java
  • 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也会改变。

  • 相关阅读:
    PHP的错误和异常处理
    PHP 页面编码声明方法详解(header或meta)
    Sentinel实现Redis高可用
    Linux学习系列之Iptables
    Python学习系列之logging模块
    [scrapy]Item Loders
    [scrapy]实例:爬取jobbole页面
    mongo开启验证
    python创建虚拟环境
    elastalert邮件报警
  • 原文地址:https://www.cnblogs.com/pengwenfan/p/9012913.html
Copyright © 2011-2022 走看看