Ich versuche herauszufinden, was für den Eigenschaftsnamen eines Javascript-Objekts als gültig angesehen wird. Zum Beispiel
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)
In diesem Beitrag werden gültige Javascript-Variablennamen aufgeführt, und '- ^ color' ist eindeutig nicht gültig (als Variablenname). Gilt das auch für Objekteigenschaftsnamen? Mit Blick auf das Obige versuche ich herauszufinden, ob
b ['- ^ color'] ist ungültig, funktioniert aber in allen Browsern eigenartig, und ich sollte nicht darauf vertrauen, dass es in Zukunft funktioniert
b ['- ^ color'] ist vollständig gültig, aber es handelt sich nur um eine Form, auf die nur auf diese Weise zugegriffen werden kann - (es wird unterstützt, damit Objekte möglicherweise als Karten verwendet werden können?)
Etwas anderes
Abgesehen davon kann eine globale Variable in Javascript auf der obersten Ebene als deklariert werden
var abc = 0;
könnte aber auch erstellt werden (wie ich es verstehe) mit
window['abc'] = 0;
Das Folgende funktioniert in allen oben genannten Browsern
window['@£$%'] = "bling!";
alert(window['@£$%']);
Ist das gültig? Es scheint den Regeln für die Benennung von Variablen zu widersprechen - oder deklariere ich dort keine Variable? Was ist der Unterschied zwischen einem Variablen- und einem Objekteigenschaftsnamen?