que era un poco rápido de ahí, el problema se plantea en la función y no donde por primera vez, dijo. Aquí está la función:
function returnAnObject(url) {
var apiurl = 'http://url.com';
var info = {};
$.getJSON(apiurl, function(data) {
$.extend(info, {
a : data.x,
b : data.y,
c : data.z
});
});
console.log(info); // Shows object as usual
console.log(info.a); // Shows undefined
return info;
}
¿Eso lo hace más claro?
FIN EDITAR
Ok lo tanto, tengo un pequeño problema.
que tienen una función que devuelve un objeto bastante simple, que es como la siguiente:
{
a: 'x',
b: 'y',
c: 'z'
}
lo guardo a una variable de la siguiente manera:
var something = functionThatReturnsObject(someargument);
console.log(something); // In chrome dev tools, I see the object and its values
console.log(something.a); // This, however, logs undefined
console.log(something['a']); // This also logs undefined
¿Por qué es esto? Creo que me estoy volviendo loco aquí, debo haber pasado por alto algo ...
La parte realmente raro pasa si en lugar de
var something = functionThatReturnsObject(someargument);
escribo
window.something = functionThatReturnsObject(someargument);
console.log(something); // Still works, showing the object and properties
console.log(something.a); // Still doesn't work
console.log(someting['a']); // Still doesn't work
Si ahora puedo acceder a la objeto directamente desde las herramientas de desarrollo, ingresando
something; // returns object, I can see everything in it etc.
something.a // Now, for some mysterious (to me) reason, this works, returning the value of a
Entonces, ¿alguien entiende lo que está pasando en su ¿mi?
Probablemente tendrá que mostrarnos la función que devuelve el valor y las definiciones reales de las variables para que podamos ver cuál es el problema. Puede ser un problema de alcance que solo podemos ver en tu código real. Las herramientas de desarrollo pueden tener un alcance un poco diferente que su código de ejecución. – jfriend00
@ jfriend00 en realidad tiene usted razón, el problema surge en la función y no en el lugar donde dije primero. Voy a editar la pregunta. – martingms
@ jfriend00 Función ahora agregada – martingms