• 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; }

      

      

      

           

      

  • 相关阅读:
    java的内存分配
    Java多线程sleep和wait的区别
    java static关键字
    在自己电脑创建svn服务、导入和导出项目
    开发工具下载地址
    svn操作步骤
    java的反射
    正数|非负数|正整数正小数和0 |金额正则表达式
    springBatch文件批处理
    IE浏览器问题之清除缓存!!!
  • 原文地址:https://www.cnblogs.com/LuckyWinty/p/5861176.html
Copyright © 2020-2023  润新知