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

Javascript超类每次都运行构造函数,javascript,Javascript,我在javascript中有一个超级类和一个子类。每次我创建一个新的子类实例时,超类构造函数的工作都很奇怪 function sup() { var elem = document.createElement('div'); this.add = function(str) { elem.innerHTML = str; document.body.appendChild(elem); } this.remove = function() { docu

我在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
),并重新命名。我应该如何重写我的课堂体系来修复它

  • 在原型中创建成员方法很好。所以,
    add
    应该在
    sup
    的原型中

  • 您只创建了一个
    div
    元素,并一次又一次地将相同的
    div
    元素添加到主体中

  • sub
    的原型应根据
    sup
    的原型创建

  • 固定代码如下所示

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

    但是如果更多的函数想要使用
    元素
    ?然后,我不能将
    var elem=document.createElement('div')
    放入add函数,例如,如果我想编写一个sup.removefunction@IterAtor请编辑您的问题并详细说明实际问题,可能有一个例子。@IterAtor哪个
    elem
    必须删除?每次我创建子类的新实例时,都应该创建一个新的div,我可以添加或删除它。但这只是一个例子。