javascript多维对象

标签 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();

结果是:

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/

相关文章:

c++ - 将字符串设置为 v8 数组

javascript - 使用 Promise.All 运行多个 promise 时出现错误

javascript - 为什么 Promise 在 Reject 时也会返回 Resolve

javascript - Highcharts 图表上可以显示的数据图数量是否有限制

c++ - 继承 node::objectWrap 与类包装器

javascript - Google 的 V8 JavaScript 引擎可用于 iOS 吗?

javascript - Node-RED/javascript : convert multi line string to single line string - strg. 替换不起作用

javascript - 新手 html/Javascript 问题。 react 迟钝

javascript - 使用 PyV8 从 Python 函数返回 `undefined`?

node.js - 无法在 Node 12.7 中安装 LDAP