Summary: resolution of mutable objects seems to be deferred until the moment you inspect them in the console. This makes sense, because if you were to have captured the state of a mutable object on logging, it'd take a lot of memory to do deep copies of objects every time you log them.
More details and an example to show this behavior:
Behavior may differ by browser, but in Chrome the behavior I observe, is that a reference to the JS object is logged at your console.log(obj). The values of that reference are deferred until you try to expand the object in your console. Try this:
var obj = {a: {b: {c: {}}}};
console.log(obj);
Then expand out the reference (obj -> a -> b -> c), verifying that there isn't a property "name" set yet.
Then assign the property:
obj.a.b.c.name = "rafael";
Compare this to the behavior you described:
var obj = {a: {b: {c: {}}}};
console.log(obj);
obj.a.b.c.name = "rafael";
Then expanding the object reference to see that the "name" property of object C has already been set, since we merely logged the reference to the object.