I'm not sure why this works.
var a = {};
a.hello = a;
If you explore the object in the console you'll see something like this:

a.hello = a is a circular reference. It seems that when we assign a.hello = a everything would blow up. Can someone explain what is happening internally?