我有一个示例类,它有两个属性:一个变量和一个对象:
var Animal, a, b;
Animal = (function() {
function Animal() {}
Animal.prototype.priceb = 4;
Animal.prototype.price = {
test: 4
};
Animal.prototype.increasePrice = function() {
this.price.test++;
return this.priceb++;
};
return Animal;
})();
a = new Animal();
console.log(a.price.test, a.priceb); // 4,4
b = new Animal();
console.log(b.price.test, b.priceb); // 4,4
b.increasePrice();
console.log(b.price.test, b.priceb); // 5,5
console.log(a.price.test, a.priceb); // 5,4 !! not what I would expect. Why not 4,4?
出于某种原因,这似乎有一种奇怪的行为。看起来该类存储了对该对象的引用,因此它可以在多个实例之间共享。
我怎样才能防止这种情况发生?