Я пытаюсь выработать то, что считается действительным для имени свойства объекта 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, а '- ^ color' явно недействителен (как имя переменной). То же самое относится к именам объектов объектов? Глядя на вышеизложенное, я пытаюсь понять, если
-
b ['- ^ color'] недействителен, но работает во всех браузерах с помощью quirk, и я не должен доверять ему, чтобы работать в будущем
-
b ['- ^ color'] полностью допустим, но это просто форма, к которой можно получить доступ только таким образом - (она поддерживается, поэтому объекты могут использоваться как карты, возможно?)
-
Что-то еще
В стороне, глобальная переменная в javascript может быть объявлена на верхнем уровне как
var abc = 0;
но также может быть создан (как я понимаю) с помощью
window['abc'] = 0;
во всех вышеперечисленных браузерах работает следующее
window['@£$%'] = "bling!";
alert(window['@£$%']);
Это действительно? Кажется, что это противоречит правилам именования переменных - или я не объявляю там переменную? Какая разница между именем переменной и именем объекта?