我正在尝试使用以下代码在 JavaScript 中定义一个多维对象:
function A(one, two) {
this.one = one;
this.inner.two = two;
}
A.prototype = {
one: undefined,
inner: {
two: undefined
}
};
A.prototype.print = function() {
console.log("one=" + this.one + ", two=" + this.inner.two);
}
var a = new A(10, 20);
var b = new A(30, 40);
a.print();
b.print();
结果是:
one=10, two=40
one=30, two=40
,但我希望
one=10, two=20
one=30, two=40
我做错了什么?
变量 inner
是类变量,而不是实例吗?
JavaScript 引擎:Google V8。
最佳答案
因为 inner
的对象字面量为所有实例共享。它属于原型(prototype)
,因此每个实例都共享同一个对象。要解决这个问题,您可以在构造函数中创建一个新的对象字面量。
关于javascript多维对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940275/