javascript多维对象

2024-01-12

我正在尝试使用以下代码在 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因此每个实例共享同一个对象。为了解决这个问题,您可以在构造函数中创建一个新的对象文字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript多维对象 的相关文章

随机推荐