一尘不染

JavaScript-无法设置未定义的属性

javascript

我的代码:

var a = "1",
b = "hello",
c = { "100" : "some important data" },
d = {};

d[a]["greeting"] = b;
d[a]["data"] = c;

console.debug (d);

我收到以下错误:

Uncaught TypeError:无法设置未定义的属性“ greeting”。

我正在尝试做类似于关联数组的操作。为什么这不起作用?


阅读 1019

收藏
2020-05-01

共1个答案

一尘不染

您永远不会设置d[a]任何值。

因此,d[a]计算为undefined,您无法在上设置属性undefined

如果您添加d[a] = {}正确,d = {}事情应该会按预期进行。

另外,您可以使用对象初始化程序:

d[a] = {
    greetings: b,
    data: c
};

或者,您可以d在匿名函数实例中设置的所有属性:

d = new function () {
    this[a] = {
        greetings: b,
        data: c
    };
};

如果您在支持ES2015功能的环境中,则可以使用计算属性名称:

d = {
  [a]: {
    greetings: b,
    data: c
  }
};
2020-05-01