javascript中的嵌套对象,最佳实践

Joh*_*han 34 javascript object

我想知道在javascript中创建嵌套对象的正确方法.我想要一个名为"defaultsettings"的基础对象.它应该有2个属性(对象类型):ajaxsettings和uisettings.我知道我可以写类似的东西

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

defaultsettings.ajaxsettings = ajaxsettings.. etc.
Run Code Online (Sandbox Code Playgroud)

但我想知道的是如何以这种方式键入它(我想这是一种更正确的方式):

var defaultsettings = { 
    var ajaxsettings = { ... }
};
Run Code Online (Sandbox Code Playgroud)

我想你明白了.谢谢!

nnn*_*nnn 74

如果您事先知道设置,则可以在单个语句中定义它:

var defaultsettings = {
                        ajaxsettings : { "ak1" : "v1", "ak2" : "v2", etc. },
                        uisettings : { "ui1" : "v1", "ui22" : "v2", etc }
                      };
Run Code Online (Sandbox Code Playgroud)

如果您事先不知道这些值,则可以定义顶级对象,然后添加属性:

var defaultsettings = { };
defaultsettings["ajaxsettings"] = {};
defaultsettings["ajaxsettings"]["somekey"] = "some value";
Run Code Online (Sandbox Code Playgroud)

或者在两者之间,使用嵌套的空对象作为属性定义顶级,然后向这些嵌套对象添加属性:

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

defaultsettings["ajaxsettings"]["somekey"] = "some value";
defaultsettings["uisettings"]["somekey"] = "some value";
Run Code Online (Sandbox Code Playgroud)

您可以使用上述技术尽可能深地嵌套,并且在方括号中有字符串文字的任何位置都可以使用变量:

var keyname = "ajaxsettings";
var defaultsettings = {};
defaultsettings[keyname] = {};
defaultsettings[keyname]["some key"] = "some value";
Run Code Online (Sandbox Code Playgroud)

请注意,您不能在{}文字语法中使用变量作为键名.

  • 我想`defaultsettings ["ajaxsettings"] ["somekey"]`相当于`defaultsettings.ajaxsettings.somekey`? (2认同)
  • 是的.您可以使用点表示法,只要键名遵循有效JS标识符名称的规则,即不是以数字开头,而不是JS保留字,没有空格等.(如果您使用的话,所有这些都是允许的方括号语法,实际上纯粹是偶然的,我上面的最后一个例子确实在键名中有一个空格.) (2认同)

Nie*_*sol 11

var defaultsettings = {
    ajaxsettings: {
        ...
    },
    uisettings: {
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)