Perdón por la nueva pregunta. Pero lo he estado intentando durante horas.

var dbruns = {}; // namespace

dbruns.dbstuff = {
    var nameslistresult = [];

Esto obtiene un error, identificador inesperado. Cuando lo puse al nivel de dbruns

var dbruns = {}; // namespace
var nameslistresult = [];
dbruns.dbstuff = {

Pasa más allá, pero luego

console.log(typeof dbruns.nameslistresult);
console.log(typeof dbruns.dbstuff.nameslistresult);

Ambas regresan indefinidas.

Realmente no tengo idea de lo que está sucediendo aquí, y cualquier ayuda sería apreciada.

0
Shammoo 31 ago. 2014 a las 18:30

2 respuestas

La mejor respuesta

Parecen ser variables y propiedades confusas.

Así es como declaras una variable (y le asignas un objeto vacío como valor usando la sintaxis literal del objeto):

var dbruns = {};

Así es como se asigna un valor a una propiedad de un objeto:

dbruns.dbstuff = { …

Así es como se construye un objeto literal con propiedades predefinidas:

… = {
    nameslistresul: [],
    foo: bar
};
3
Quentin 31 ago. 2014 a las 14:34

Desafortunadamente, javascript no tiene bloques espaciados por nombre, sino que las funciones actúan como recintos.

El primer error que está obteniendo es porque no está definiendo un espacio de nombres, sino definiendo un objeto javascript, y luego colocando expresiones inesperadas allí en lugar de definiciones de propiedades ...

var dbruns = { key: "value", another_key: "another value" } // valid syntax for object definition

Si desea que nameresults sea una propiedad de dbruns, puede hacer ...

var dbruns = {}
dbruns.nameresults = []
dbruns.stuff = {}

Javascript usa herencia prototípica, y todo en javascript es un objeto.

1
Billy Moon 31 ago. 2014 a las 14:36