小编典典

有效的javascript对象属性名称

javascript

我正在尝试找出对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)
  1. b [‘-^ colour’]无效,但在所有浏览器中都存在古怪的现象,我不应该相信它会继续向前发展

  2. b [‘-^ colour’]是完全有效的,但它的形式只能以这种方式访问​​-(受支持,所以对象也许可以用作地图?)

  3. 还有别的

顺便说一句,在javascript中,全局变量可能在顶层声明为

var abc = 0;

但也可以(据我所知)与

window['abc'] = 0;

以下适用于所有上述浏览器

window['@£$%'] = "bling!";
alert(window['@£$%']);

这有效吗?似乎与变量命名规则相矛盾-还是我不在那里声明变量?变量和对象属性名称之间有什么区别?


阅读 344

收藏
2020-05-01

共1个答案

小编典典

是的,对象可以用作地图,任何字符串都可以是属性名称。您已经发现,某些属性 只能 使用方括号语法来访问。

window['abc']

正在访问属性。它不是变量,即使它引用的值与全局值相同:

abc
2020-05-01