regenfeld: variablenbezeichnung erst zur laufzeit erzeugen

Beitrag lesen

Grüssi CK,

Der Punkt-Operator macht nichts anderes, als auf ein benanntes Feld in einem Array zuzugreifen.

Hmm, ich hab zu engstirnig gedacht anscheinend. Der Punktoperator grefit IMHO nicht auf ein Array zu, sondern generell auf Objekte, noch genauer: Man kann mittels Punktoperator auf Methoden, und Attribute von Objekten zugreifen. Da ja window, forms, elements, ... Objekte der JS-Sprache sind, dachte ich anfangs es müsse auch ein Punkt dazwischen sein.

Woran ich aber nicht gedacht hatte, war dass ja Arrays in Javascript auch nix anderes als Objekte sind.

var blah = new Array();
blah['blub'] = "xyz";
alert(bla.blub);

also greift bla.blub eigentlich - grob gesprochen - nicht auf ein Array zu, sondern genauergesagt auf das Attribut (Variable) 'blub' das Array-Objektes 'bla'. Zusätzlich gibt in JS dann eben auch noch den []-Operator, der anscheinend die selbe Funktionalität besitzt wie der Punktoperator:

Beispiel:

var my = new MyClass();
my.name = "regenfeld" // wäre dann gleichwertig zu my['name'] = "regenfeld";
                      // bei Arrays ist es dann halt umgekehrt

Der []-Operator ist quasi nur ein Gimmick, zur instinktiveren Handhabung von (Array-)Objekten in Javascript, so wie man es aus anderen Programmiersprachen gewöhnt ist. Was, wenn das von mir jetzt korrekt geschlussfolgert wurde, ein weiterer Unterschied zu anderen Sprachen wäre, inbesondere zu Java, wo das ja nicht so gehandhabt wird. da kann nur mittels '.' auf Objekte zugegriffen werden (oder etwa doch?)

So, schätzermativ dürfte das jetzt passen, ich hab einfach zuwenig in Klassen/Objekten als vielmehr in Arrays, und simplen Datentypen gedacht, oder hab ich noch irgendwo nen Denkfehler eingebaut?

lg regenfeld

PS: Sieht aus, als wärs wirklich lohnenswert, mich mal näher mit dem Objekt-Schema von JS auseinanderzusetzen ;-)