可以在以下小片段中看到该行为(将其作为全局脚本执行):
var name = {}; name.FirstName = 'Tom'; alert(name.FirstName);
该警报undefined在Chrome中产生,但在IE和Firefox中有效。当我这样做时,我也会得到一个怪异的价值
undefined
alert(name);
window.name具有特殊用途,应该是字符串。Chrome似乎已将其显式转换为字符串,因此var name = {};实际上最终为全局变量name(即window.name)提供了值"[object Object]"。由于它是原始元素,因此属性(name.FirstName)不会“粘滞”。
var name = {};
name
window.name
"[object Object]"
name.FirstName
要解决此问题,请不要将其name用作全局变量。