Verwenden reservierter Wörter als Eigenschaftsnamen, erneut besucht
Kann ein reserved word
verwendet werden, als ein Objekt die Eigenschaft name?
Dieses Problem wurde angehoben, indirekt vorherigen ein stackoverflow-Frage. die Antwort schien allgemeiner Konsens durch @Squeegy:
können Sie diese Wörter verwenden, sondern nur als strings und nicht-Kurzschrift-Eigenschaften -
foo["class"]
ist cool, in der Erwägung, dassfoo.class
ist nicht
hilfsbereit, geben Sie einen link zu der Liste der reservierten Wörter
während ich denke, dass @Squeeky ist wohl mehr wissen als ich in diesem Bereich, und es ist wahrscheinlich eine schlechte Idee Verwendung von reservierten Wörtern in manchen Situationen, denke ich, dass seine Schlussfolgerung falsch ist, basierend auf zwei Punkte:
- Prüfung der reservierten Worte mit Ihnen als "shorthand" - Eigenschaften
- den HTMLFormElement macht es unmöglich nicht Verwendung von reservierten Wörtern in "Kurzform"
Erste, verwenden Sie das reservierte Wort-Liste, jeder wurde Hinzugefügt als eine Eigenschaft an ein Object
und HTMLElement
sowohl als obj["word"]
und obj.word
und dann abgerufen als obj["word"]
und obj.word
. In jedem der 63 Fälle alle acht tests einwandfrei funktionierte.
Zweite, die HTMLFormElement erfordert dies funktioniert, da ruft es in seine Elemente mithilfe von Kurznotation. Wenn <input name='typeof' value='scalar' />
ist ein element eines Formulars, dann form.typeof
== "scalar".
Aus meiner Erfahrung, die reservierte Wörter sind in der Regel Daten zugefügt (zB eine Spalte mit dem Namen "privat"), nicht Programm zugefügt. Als solche, die Sie kontaminieren JSON-Objekte, und von dort aus EINGANG, und von dort aus die HTMLFormElement. Einfach ausgedrückt, ohne eine riesige Menge von (imho unnötige) Arbeit, es ist unmöglich zu halten, reservierte Wörter nicht gezwungen, um korrekt zu arbeiten in Kurzform.
Scheint es mir, diese realen Probleme:
- darauf zu achten, nicht in Konflikt mit der existierenden Eigenschaftenkeine reservierten Wörter
- (vielen, wenn nicht allen) Variablen nicht reservierte Wörter
- Nutzung der reservierten Wörter als Eigenschaften werden können (aber nicht unbedingt) verwirrend
Ist diese Schlussfolgerung dann richtig, dass reservierte Wörter als Namen für die Eigenschaft und den Zugriff auf Sie entweder als Zeichenketten oder die Kurzform, ist in Ordnung, solange ein wenig gesundem Menschenverstand angewendet wird, um die situation?
InformationsquelleAutor der Frage cc young | 2011-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
In ECMAScript, ab ES5, reservierte Wörter dürfen verwendet werden als Objekt-Eigenschaft-Namen "in der buff". Dies bedeutet, dass Sie brauchen nicht zu sein, "gekleidet" in Anführungszeichen bei der Definition von Objekt-literalen, und Sie können aufgelöst werden (für den Zugriff, zuweisen und löschen) auf Objekte ohne eckige Klammer Indizierung notation.
Sagte, reservierte Wörter dürfen noch NICHT verwendet werden, wie die Bezeichner-Namen. Dies steht ganz eindeutig in der Spezifikation und ist angegeben etwas Nachdruck hier (wenn Sie nicht möchten, dass Ihre Augen zu Bluten, indem er zum Lesen der eigentlichen Sprache spec)...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words
InformationsquelleAutor der Antwort UIZE
Ich bin mir nicht ganz sicher, was der Punkt ist, Sie wollen, so ist die einzige Antwort, die ich geben kann ist: ja, es ist ok zu verwenden, um reservierte Wörter als Namen für die Eigenschaft.
(Allerdings zwei kleine Anmerkungen:
foo["class"]
ist ok, nichtfoo[class]
. Und irgendeine Weise, die Sie verwenden solltenform.elements["xyz"]
und nichtform.xyz
Zugriff auf ein element mit dem Namenxyz
.)InformationsquelleAutor der Antwort RoToRa
Ja, kann es verwendet werden.
Nur kleine Bemerkung, wenn Sie YUI compressor setzen Sie die Eigenschaft name, die gleich einem von js reservierte Wörter in Anführungszeichen.
Zum Beispiel, dies wird nicht komprimieren
Wird dies tun,
Hier ist Online-JavaScript - /CSS-Kompression Mit YUI Compressorwo dies getestet werden kann.
InformationsquelleAutor der Antwort gumkins
Ja, in den meisten Browsern (einschließlich IE9+)
Gibt ' s eigentlich einen Eintrag in der Kangax Kompatibilitäts-Tabelle für "Reservierte Wörter als Namen für die Eigenschaft"
http://kangax.github.io/compat-table/es5/#test-Object/array_literal_extensions_Reserved_words_as_property_names
InformationsquelleAutor der Antwort David Gilbertson