Hallo ebody,
var autos = {};
var varMarke = "dacia";
autos = {varMarke:[]};
Dieser Code hat zwei Probleme. Erstens möchtest Du dem Objekt in autos
eine Eigenschaft hinzufügen. Du ersetzt aber das ganze Objekt. Zweitens möchtest Du, wie schon erkannt, den Namen der Eigenschaft aus einer Variablen holen und nicht statisch setzen.
Wenn Eigenschaftsnamen variabel sind, muss man mit der [] Notation arbeiten. Ein Objektliteral mit variablen Eigenschaftsnamen ist überhaupt nicht möglich (es sei denn, man arbeitet mit fiesen Tricks wie eval(), aber das gehört zu den ugly parts von JavaScript).
So geht es:
// Im Objektliteral
var autos = { Opel: [] };
// Hinzufügen von Eigenschaften mit statischen Namen in Punkt oder [] Notation
autos.Mercedes = [];
autos["Porsche"] = [];
// Hinzufügen von Eigenschaften mit variablen Namen nur in [] Notation
var marke = "Dacia";
autos[marke] = [];
Eine Art "Objekt-Merge" Operator, also sowas wie
var autos = { porsche: [] };
autos += { dacia: [] }; // KEIN JAVASCRIPT !
gibt es in JavaScript nicht. Aber ES2015 führt hierfür die Object.assign Methode ein.
Rolf
--
sumpsi - posui - clusi
sumpsi - posui - clusi