The behaviour can be seen in this little snippet (execute it as a global script):
var name = {};
name.FirstName = 'Tom';
alert(name.FirstName);
The alert yields undefined in Chrome but works in IE and Firefox. I also get a weird value when I do
alert(name);
window.name has a special purpose, and is supposed to be a string. Chrome seems to explicitly cast it to a string, so
var name = {};actually ends up giving the global variablename(i.e.window.name) a value of"[object Object]". Since it’s a primitive, properties (name.FirstName) won’t “stick.”To get around this issue, don’t use
nameas a global variable.