EDIT
I was a bit quick there, the problem arises in the function and not where I first said. Here is the function:
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;
}
Does that make it clearer?
END EDIT
Ok so, I have a little problem.
I have a function that returns a fairly simple object, which looks something like this:
{
a: 'x',
b: 'y',
c: 'z'
}
I save it to a variable like this:
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
Why is this? I think I'm going crazy here, I must have overlooked something...
The really weird part happens if instead of
var something = functionThatReturnsObject(someargument);
I write
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
If I now access the object directly from the dev tools, inputting
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
So, does anyone understand what is going on here?