Pregunta Objetos anidados en javascript, mejores prácticas


Me gustaría saber la forma correcta de crear un objeto anidado en javascript. Quiero un objeto base llamado "ajustes por defecto". Debe tener 2 propiedades (tipo de objeto): ajaxsettings y uisettings. Sé que puedo escribir algo así como

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

defaultsettings.ajaxsettings = ajaxsettings.. etc.

Pero lo que quiero saber es cómo escribirlo de esta manera (supongo que es una forma más correcta de hacerlo):

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

Supongo que entiendes la idea. ¡Gracias!


28
2017-10-29 23:42


origen


Respuestas:


Si conoce la configuración de antemano, puede definirla en una sola declaración:

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

Si no conoce los valores por adelantado, puede simplemente definir el objeto de nivel superior y luego agregar propiedades:

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

O a medio camino entre los dos, defina el nivel superior con objetos vacíos anidados como propiedades y luego agregue propiedades a esos objetos anidados:

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

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

Puedes anidar tan profundamente como quieras utilizando las técnicas anteriores, y en cualquier lugar donde tengas un literal de cadena entre corchetes puedes usar una variable:

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

Tenga en cuenta que puede no use variables para nombres de tecla en la sintaxis {} literal.


66
2017-10-29 23:48



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

11
2017-10-29 23:44



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

Eche un vistazo a este sitio: http://www.json.org/

Además, puedes intentar llamar a JSON.stringify () en uno de tus objetos desde el navegador para ver el formato json. Tendría que hacer esto en la consola o en una página de prueba.


3
2017-10-29 23:45