-1
超類具有'容器'屬性。JavaScript原型繼承錯誤
當子類從超類繼承時,'container'屬性在子類之間共享。
它是如何實現的,每個子類都有其超類的副本及其所有屬性。
var a = function() {
};
a.prototype.ax = function() {
this.container = [];
}
var b = function() {
a.call(this);
}
b.constructor = b;
b.prototype = Object.create(a.prototype);
b.prototype.ax = function() {
a.prototype.ax();
this.container.push('b');
}
var c = function() {
a.call(this);
}
c.constructor = c;
c.prototype = Object.create(a.prototype);
c.prototype.ax = function() {
a.prototype.ax();
this.container.push('c');
}
var bi = new b();
var ci = new c();
bi.ax();
ci.ax();
// why bi container gets overriden?
console.log(bi.container);