Javascript超类每次都运行构造函数

时间:2014-03-20 15:16:40

标签: javascript

我在javascript中有一个超级和子类。每次我创建一个新的子类实例时,超类构造函数都很奇怪。

function sup() {
  var elem = document.createElement('div');

  this.add = function(str) {
    elem.innerHTML = str;
    document.body.appendChild(elem);
  }

  this.remove = function() {
    document.body.removeChild(elem);
  };

  //...
}

function sub(str) {
  this.add(str);

  //...
}

sub.prototype = new sup();

只创建了一个div(elem),并再次重命名。我应该如何重写我的类系统来解决它?

1 个答案:

答案 0 :(得分:1)

  1. 很有可能在原型中创建成员方法。因此,add应该在sup的原型中。

  2. 您只创建一个div元素,并一次又一次地向正文添加相同的div元素。

  3. sub的原型应该来自sup的原型。

  4. 固定代码看起来像这样

    function sup() {}
    
    sup.prototype.add = function(str) {
        var elem = document.createElement('div');
        elem.innerHTML = str;
        document.body.appendChild(elem);
    }
    
    function sub(str) {
        this.add(str);
    }
    
    sub.prototype = Object.create(sup.prototype);