zoukankan      html  css  js  c++  java
  • javascript继承模式详解

    javascript继承模式有以下几种
    1.传统模式 -- 原型链 缺点: 过多的继承了没用的东西
    2.借用构造函数(常用) 缺点: 不能继承继承函数的原型 每次构造函数要多走一个函数
    3.共享模式(常用) 缺点: 不能随便改动自己的原型
    4.圣杯模式

    共享模式

    //共享模式
    Father.prototype.lastName = 'li'
    function Father() {
    
    }
    function Son() {
    
    }
    Son.prototype = Father.prototype  //直接让Son的原型等于Father的原型
    var father = new Father()
    var son = new Son()
    //两者构造出来的都是共用同一个原型
    //所以不能随便改动自己的原型

    圣杯模式

    //圣杯模式
    Father.prototype.lastName = 'li'
    function Father() {
    
    }
    function Son() {
    
    }
    function F() {} //中间层
    F.prototype = Father.prototype
    Son.prototype = new F()  //原型链
    //两者构造出来的都是共用同一个原型
    //修改Son的原型不会修改Father的原型

    封装圣杯模式继承方法

    //封装圣杯模式继承方法
    function inherit(Target, Origin) {
      function F() {}
      F.prototype = Origin.prototype
      Target.prototype = new F()
      Target.prototype.constructor = Target
      Target.prototype.uber = Origin.prototype  //为了知道最终继承的是谁,加了uber属性,有时需要知道最终继承的是谁可以用这个属性
    }

    雅虎封装圣杯模式继承方法

    //雅虎封装方法
    var inherit = (function(){
      var F = function() {}       //闭包, 变量私有化
      return function(Target, Origin) {
        F.prototype = Origin.prototype
        Target.prototype = new F()
        Target.prototype.constructor = Target
        Target.prototype.uber = Origin.prototype
      } }())

    end !!!

  • 相关阅读:
    替代PhotoShop:GIMP图形编辑器的使用
    Matlab: 主函数和子函数间接传递变量
    代码管理:SVN的使用
    Python: 科学计算
    Python: 代码调试
    Latex: article模板
    Matlab: 程序优化和调试
    LibreOffice的使用技巧
    mysql--多表联合查询
    mysql--数据查询
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13815584.html
Copyright © 2011-2022 走看看