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”。


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


互换的青春
浏览 1831回答 3
3回答

跃然一笑

您永远不会设置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  }};

慕桂英546537

存储在的对象d[a]尚未设置为任何对象。因此,d[a]计算为undefined。您不能将属性分配给undefined:)。您需要将一个对象或数组分配给d[a]:d[a] = [];d[a]["greeting"] = b;console.debug(d);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript