我在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
),并再次重命名。我应该如何重写我的类系统来解决它?
答案 0 :(得分:1)
很有可能在原型中创建成员方法。因此,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);