我正在尝试找出对 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)
这篇文章详细介绍了有效的 javascript 变量名,而“-^colour”显然是无效的(作为变量名)。这同样适用于对象属性名称吗?看上面的我正在努力解决如果
b['-^colour'] 无效,但通过 quirk 在所有浏览器中都有效,我不应该相信它会继续工作
b['-^colour'] 是完全有效的,但它只是一种只能以这种方式访问的形式 - (它被支持所以对象可以用作地图?)
别的东西
顺便说一句,javascript 中的全局变量可能会在顶层声明为
var abc = 0;
但也可以创建(据我所知)
window['abc'] = 0;
以下适用于所有上述浏览器
window['@£$%'] = "bling!";
alert(window['@£$%']);
这是有效的吗?这似乎与变量命名规则相矛盾 - 或者我没有在那里声明变量?变量名和对象属性名有什么区别?