1. ホーム
  2. javascript

[解決済み] JavaScript - 未定義のプロパティを設定することはできません。

2022-03-05 02:04:07

質問

私のコード

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' が未定義であるため設定できません。

連想配列と似たようなことをやろうとしています。なぜうまくいかないのでしょうか?

どのように解決するのですか?

ふいうち 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
  }
};