zoukankan      html  css  js  c++  java
  • JS继承之寄生类继承

    原型式继承

    其原理就是借助原型,可以基于已有的对象创建新对象。节省了创建自定义类型这一步(虽然觉得这样没什么意义)。

    模型

    function object(o){
      function W(){
      }
      W.prototype = o;
     return new W();
    }
    

    ES5新增了Object.create()方法规范化了原型式继承。即调用方法为:Object.create(o);

    适用

    只想让一个对象跟另一个对象建立继承这种关系的时候,可以用Object.create();这个方法,不兼容的时候,则手动添加该方法来兼容。

    寄生式继承

    寄生式继承是原型式继承的加强版。

    模型

    function createAnother(origin){
      var clone=object(origin);
      clone.say=function(){
        alert('hi')
      }
      return clone;
    

    即在产生了这个继承了父类的对象之后,为这个对象添加一些增强方法。

    寄生组合式继承

    实质上,寄生组合继承是寄生式继承的加强版。这也是为了避免组合继承中无可避免地要调用两次父类构造函数的最佳方案。所以,开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。

    基本模式

    function inheritPrototype(SubType,SuperType){
      var prototype=object(SuperType.prototype);
      prototype.constructor=subType;
      subType.prototype=prototype;
    }
    

    这个object是自定义的一个相当于ES5中Object.create()方法的函数。在兼容性方面可以两个都写。

    兼容写法

            function object(o){
                function W(){
                }
                W.prototype=o;
                return new W;
            }
            function inheritPrototype(SubType,SuperType){
                var prototype;
               if(typeof Object.create==='function'){
                prototype=Object.create(SuperType.prototype);
               }else{
                prototype=object.create(SuperType.prototype);
               }
    prototype.constructor=SubType; SubType.prototype=prototype; }

      

      

      

           

      

  • 相关阅读:
    linux下设置SSH无密码登陆
    设置sudo权限
    集群重启后启动ambari-server访问Web页面无法启动集群解决
    使用Ambari部署hadoop集群
    centos7.6安装python3.7
    Locust
    测试框架(自然语言)
    Maven之(七)pom.xml配置文件详解
    git的使用
    elastic search(es)安装
  • 原文地址:https://www.cnblogs.com/LuckyWinty/p/5861176.html
Copyright © 2011-2022 走看看