• JavaScript继承


    1、传统继承形式 ——>原型链继承

      缺陷:过多的继承了没用的属性

    function SuperType() {
         this.property = true;
    }
    SuperType.prototype.getSuperValue
    = function() { return this.property; } function SubType () { this.property = false; ) //继承superType SubType.prototype = new SuperType(); //添加新的方法 SubType.prototype.getSubValue = function() { return this.property; } //重写超类中的方法
    SubType.prototype.getSuperValue = function() {
      return false;
    }
    var instance = new SubType(); console.log(instance.getSuperValue) //false

    2、借用构造函数

      不足:不能继承借用构造函数的原型;每次构造函数都多走一个函数

    function SuperType(name, age) {
      this.name = name;
      this.age = age;
    }
    function SubType(name, age, gender){
      SuperType.call(this, name, age);
      //SuperType.apply(this, [name, age]);
      this.gender = gender;
    }
    var instance = new SubType("huang", 18, "male");
    
    console.log(instance.name)  //"huang"
    console.log(instance.gender)  //"male"

    3、圣杯模式

    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;
      }
    }())

    ***方法

     1、obj.hasOwnProperty(property)   判断对象是否有某个属性

     2、obj instanceof super  判断obj的原型链上是否存在super

     3、Object.create(原型)

        var obj = Object.create(null)  //这样构造的对象原型链为空

  • 相关阅读:
    CCF NOI1067 最匹配的矩阵
    POJ NOI0105-29 数字反转
    POJ NOI0105-30 含k个3的数
    POJ NOI0105-32 求分数序列和
    POJ NOI0105-33 计算分数加减表达式的值
    POJ NOI0105-34 求阶乘的和
    POJ NOI0105-35 求出e的值
    POJ NOI0105-36 计算多项式的值
    POJ NOI0105-44 第n小的质数
    POJ NOI0105-43 质因数分解
  • 原文地址:https://www.cnblogs.com/lianchenxi/p/9736558.html
Copyright © 2020-2023  润新知