function StringBuffer(initialStr) {
this.append(initialStr);
}
StringBuffer.prototype = {
items: [],
append: function(str) {
this.items[this.items.length] = str instanceof StringBuffer ? str.toString() : str;
return this;
},
toString: function() {
return this.items.join("");
}
};
alert(new StringBuffer("foo").append(new StringBuffer("bar")).toString());
如何确保此警报" foobar" ?
答案 0 :(得分:2)
您需要具有实例items
属性,而不是共享:
function StringBuffer(initialStr) {
this.items = [];
this.append(initialStr);
}
并将其从原型中移除。
否则StringBuffer
的所有实例都会改变同一个数组。
答案 1 :(得分:1)
使items
成为实例变量而不是所有StringBuffer实例共享的数组。
function StringBuffer(initialStr) {
this.items = [];
this.append(initialStr);
}
StringBuffer.prototype = {
append: function(str) {
this.items[this.items.length] = str instanceof StringBuffer ? str.toString() : str;
return this;
},
toString: function() {
return this.items.join("");
}
};