Ist es möglich, eine dynamisch benannte Eigenschaft mithilfe von Objektliteral in JavaScript zu definieren?

8

Betrachten Sie Folgendes:

%Vor%

Entspricht

%Vor%

Entspricht

%Vor%

Entspricht

%Vor%

Ist es möglich, etwas wie

zu tun? %Vor%

So dass das Ergebnis wäre

%Vor%

Akzeptable Lösungen sind in JavaScript oder CoffeeScript

    
user633183 21.12.2012, 22:00
quelle

7 Antworten

4

ES6 unterstützt berechnete Eigenschaften.

%Vor%

Jeder Ausdruck kann innerhalb von [] verwendet werden, um den Eigenschaftsnamen zu definieren

%Vor%

Wenn Sie sich in einer ES5-Welt auf dieses Verhalten verlassen müssen, können Sie sich auf den sehr fähigen babel.js verlassen, um Ihren ES6-Code zu übertragen zu ES5-kompatiblem Code.

    
user633183 11.06.2015, 19:04
quelle
5

Nein.

Es gibt keine Möglichkeit, dies mithilfe der Objektliteralnotation zu tun.

UPDATE: Laut ECMAScript Standard 6.0 können Sie nun Folgendes tun:

%Vor%

Diese Lösung funktioniert jedoch nicht in alten Browsern, die ES6 nicht unterstützen .

    
VisioN 21.12.2012 22:02
quelle
4
Mit

JSON parse können Sie eine JSON-Zeichenfolge in ein Objekt konvertieren:

%Vor%

Dies ist nicht unbedingt ein Objekt, aber wenn Sie den Namen Ihrer Eigenschaft als Variable eingeben möchten, funktioniert das.

    
Christophe 21.12.2012 22:29
quelle
3
___ qstntxt ___

Betrachten Sie Folgendes:

%Vor%

Entspricht

%Vor%

Entspricht

%Vor%

Entspricht

%Vor%

Ist es möglich, etwas wie

zu tun? %Vor%

So dass das Ergebnis wäre

%Vor%

Akzeptable Lösungen sind in JavaScript oder CoffeeScript

    
___ answer13998012 ___
Mit

JSON parse können Sie eine JSON-Zeichenfolge in ein Objekt konvertieren:

%Vor%

Dies ist nicht unbedingt ein Objekt, aber wenn Sie den Namen Ihrer Eigenschaft als Variable eingeben möchten, funktioniert das.

    
___ answer30789337 ___

ES6 unterstützt berechnete Eigenschaften.

%Vor%

Jeder Ausdruck kann innerhalb von %code% verwendet werden, um den Eigenschaftsnamen zu definieren

%Vor%

Wenn Sie sich in einer ES5-Welt auf dieses Verhalten verlassen müssen, können Sie sich auf den sehr fähigen babel.js verlassen, um Ihren ES6-Code zu übertragen zu ES5-kompatiblem Code.

    
___ answer13997760 ___

Nein.

Es gibt keine Möglichkeit, dies mithilfe der Objektliteralnotation zu tun.

UPDATE: Laut ECMAScript Standard 6.0 können Sie nun Folgendes tun:

%Vor%

Diese Lösung funktioniert jedoch nicht in alten Browsern, die ES6 nicht unterstützen .

    
___ answer13997764 ___

JavaScript

%Vor%

CoffeeScript

%Vor%     
___ antwort13998890 ___

Wie andere bereits gesagt haben, gibt es derzeit keine Syntax für interpolierte Schlüsselzeichenfolgen in Objektliteralen in CoffeeScript. aber es scheint, dass dieses Feature irgendwann existierte! In diesen GitHub-Ausgaben gibt es einige Diskussionen darüber: # 786 und #1731 .

Es ist in Coco und LiveScript implementiert als:

%Vor%     
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123coffeescript ___ CoffeeScript ist eine Sprache, die in JavaScript kompiliert wird. Unter all diesen peinlichen Klammern und Semikolons hatte JavaScript immer ein wunderschönes Objektmodell im Blick. CoffeeScript ist ein Versuch, die guten Teile von JavaScript auf einfache Weise zu entlarven. ___ answer13997887 ___

Um Ihre Frage zu beantworten, ist dies der einzige Weg, den ich kenne. Es verwendet %code% . Aber Vorsicht, %code% ist böse!

%Vor%

Das ist eine hässliche Lösung. Um auf Nummer sicher zu gehen, sollte man sich nicht darauf verlassen. Benutze es nicht!

    
___ answer32664121 ___

Ab CoffeScript Version 1.9.1 funktioniert das:

%Vor%

Es kompiliert zu:

%Vor%

Versuchen Sie es .

    
___ qstnhdr ___ Ist es möglich, eine dynamisch benannte Eigenschaft mithilfe von Objektliteral in JavaScript zu definieren? ___
epidemian 22.12.2012 00:24
quelle
1

Ab CoffeScript Version 1.9.1 funktioniert das:

%Vor%

Es kompiliert zu:

%Vor%

Versuchen Sie es .

    
Sukima 19.09.2015 04:15
quelle
0

JavaScript

%Vor%

CoffeeScript

%Vor%     
Casey Foster 21.12.2012 22:03
quelle
-1

Um Ihre Frage zu beantworten, ist dies der einzige Weg, den ich kenne. Es verwendet eval . Aber Vorsicht, eval ist böse!

%Vor%

Das ist eine hässliche Lösung. Um auf Nummer sicher zu gehen, sollte man sich nicht darauf verlassen. Benutze es nicht!

    
0x499602D2 21.12.2012 22:15
quelle

Tags und Links