我正在尝试找出对javascript对象的属性名称有效的内容。例如
var b = {} b['-^colour'] = "blue"; // Works fine in Firefox, Chrome, Safari b['colour'] = "green"; // Ditto alert(b['-^colour']); // Ditto alert(b.colour); // Ditto for(prop in b) alert(prop); // Ditto //alert(b.-^colour); // Fails (expected)
b [‘-^ colour’]无效,但在所有浏览器中都存在古怪的现象,我不应该相信它会继续向前发展
b [‘-^ colour’]是完全有效的,但它的形式只能以这种方式访问-(受支持,所以对象也许可以用作地图?)
还有别的
顺便说一句,在javascript中,全局变量可能在顶层声明为
var abc = 0;
但也可以(据我所知)与
window['abc'] = 0;
以下适用于所有上述浏览器
window['@£$%'] = "bling!"; alert(window['@£$%']);
这有效吗?似乎与变量命名规则相矛盾-还是我不在那里声明变量?变量和对象属性名称之间有什么区别?
是的,对象可以用作地图,任何字符串都可以是属性名称。您已经发现,某些属性 只能 使用方括号语法来访问。
window['abc']
正在访问属性。它不是变量,即使它引用的值与全局值相同:
abc