javascript多维对象

Zer*_*i0n 5 javascript v8

我正在尝试使用以下代码在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();
Run Code Online (Sandbox Code Playgroud)

结果是:

one=10, two=40
one=30, two=40
Run Code Online (Sandbox Code Playgroud)

,但我希望

one=10, two=20
one=30, two=40
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?变量inner是一个类变量,而不是一个实例?

JavaScript引擎:Google V8.

Mat*_*nar 5

因为对象文字inner为所有实例共享.它属于prototype,因此每个实例共享同一个对象.要解决此问题,您可以在构造函数中创建新的对象文字.