447 Stimmen

Wie erstellt man eine Objekteigenschaft aus einem Variablenwert in JavaScript?

Ich möchte eine neue Eigenschaft zu 'myObj' hinzufügen, sie 'string1' nennen und ihr den Wert 'string2' geben, aber wenn ich das tue, wird 'undefined' zurückgegeben:

var myObj = new Object;
var a = 'string1';
var b = 'string2';
myObj.a = b;

alert(myObj.string1); //Returns 'undefined'
alert(myObj.a); //Returns 'string2'

Mit anderen Worten: Wie erstelle ich eine Objekteigenschaft und gebe ihr den in der Variablen gespeicherten Namen, aber nicht den Namen der Variablen selbst?

567voto

philfreo Punkte 38965

559voto

Oriol Punkte 246798

ES6 führt berechnete Eigenschaftsnamen ein, mit denen Sie Folgendes tun können

var myObj = {[a]: b};

Beachten Sie, dass die Browserunterstützung derzeit vernachlässigbar ist.

88voto

cgp Punkte 40346

Die Punktschreibweise und die Eigenschaften sind gleichwertig. Sie würden also wie folgt vorgehen:

var myObj = new Object;
var a = 'string1';
myObj[a] = 'whatever';
alert(myObj.string1)

(Warnungen "was auch immer")

11voto

user286806 Punkte 485

Ecu, wenn du es tust myObj.a und sucht dann nach der Eigenschaft a von myObj. Wenn Sie myObj[a] =b dann sucht es nach dem a.valueOf() Eigenschaft von myObj.

8voto

user2846569 Punkte 2536

Oneliner:

obj = (function(attr, val){ var a = {}; a[attr]=val; return a; })('hash', 5);

Oder:

attr = 'hash';
val = 5;
var obj = (obj={}, obj[attr]=val, obj);

Gibt es etwas Kürzeres?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X