1. ホーム
  2. javascript

[解決済み] javascriptのネストされたオブジェクト、ベストプラクティス

2022-03-06 09:48:25

質問

javascriptでネストされたオブジェクトを作成する正しい方法を知りたいです。私は、"defaultsettings"という名前のベースオブジェクトが欲しいのです。このオブジェクトは、ajaxsettingsとuisettingsという2つのプロパティ(オブジェクトタイプ)を持っている必要があります。次のように書けばいいことは分かっています。

var defaultsettings = new Object();
var ajaxsettings = new Object();

defaultsettings.ajaxsettings = ajaxsettings.. etc.

しかし、私が知りたいのは、このように入力する方法です(それがより正しい方法だと思います)。

var defaultsettings = { 
    var ajaxsettings = { ... }
};

お分かりいただけたでしょうか?ありがとうございます。

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

あらかじめ設定がわかっている場合は、1つの文で定義することができます。

var defaultsettings = {
                        ajaxsettings : { "ak1" : "v1", "ak2" : "v2", etc. },
                        uisettings : { "ui1" : "v1", "ui22" : "v2", etc }
                      };

事前に値がわからない場合は、トップレベルのオブジェクトを定義してから、プロパティを追加すればよいでしょう。

var defaultsettings = { };
defaultsettings["ajaxsettings"] = {};
defaultsettings["ajaxsettings"]["somekey"] = "some value";

あるいはその中間で、トップレベルにネストした空のオブジェクトをプロパティとして定義し、そのネストしたオブジェクトにプロパティを追加します。

var defaultsettings = {
                        ajaxsettings : {  },
                        uisettings : {  }
                      };

defaultsettings["ajaxsettings"]["somekey"] = "some value";
defaultsettings["uisettings"]["somekey"] = "some value";

上記のテクニックを使えばいくらでも深くネストすることができますし、角括弧の中に文字列リテラルがあれば、どこでも変数を使うことができます。

var keyname = "ajaxsettings";
var defaultsettings = {};
defaultsettings[keyname] = {};
defaultsettings[keyname]["some key"] = "some value";

ができることに注意してください。 ない は、{ } リテラルの構文でキー名に変数を使用します。