【发布时间】:2011-06-13 01:25:16
【问题描述】:
我正在尝试创建一个可以创建多个实例的主对象,每个实例都继承子对象(具有唯一/隔离的属性)。但是,当我这样做时,对象的属性(在更改后)会针对所有创建的对象而更改。我可能没有正确解释这一点,但这个例子应该很清楚。
Main = function(){};
// Extending the main class with new object. Doing it this way so I can have these in
// separate files.
Main.prototype.foo = {
bar: 1
}
// First instance of Main().
var A = new Main();
// Second instance of Main().
var B = new Main();
// Set the bar property to different values for each Main() object.
A.foo.bar = 2;
B.foo.bar = 3;
// Both A.foo.bar and B.foo.bar return 3.
alert(A.foo.bar);
alert(B.foo.bar);
我想要实现的是 A.foo.bar 返回 2 和 B.foo.bar 返回 3,这样我就有了彼此独立的孤立对象。
有什么想法吗?我只是错过了一些明显的东西吗?将不胜感激!
【问题讨论】:
-
为什么要设置两次“foo”?这只是转录错误吗?
标签: javascript prototype-programming