Hallo,
myObj = {
"testAttr" : "Bla"
}
function callTestAttr(attrName) {
alert(myObj.attrName); // undefined
alert(myObj[attrName]); // "Bla"Meinst du das ernst?
Du beschäftigst dich mit Crockford und stellst diese Grundlagenfrage?
Naja mein Interesse ist immer wieder auf Projektphasen beschränkt und durchaus auch eher hobbyhaft und theoretischer Art. Crockfords Ansichten beruhen ja im Grunde auf Überlegungen allgemeiner Art zu Fehlervermeidung und effizienter Strukturierung.
a.b greift immer auf eine Property namens »b« zu. »b« ist immer »b« ist immer »b«.
Ja, jetzt habe ich es (mal wieder) kapiert oder meine es ;-).
Wenn du den Property-Namen hingegen aus einer Variable nehmen willst, er also nicht direkt aus dem Quellcode genommen werden soll, verwende die Bracket-Schreibweise. Diese erwartet einen String, bzw. zwischen den Brackets kann eine beliebige Expression stehen, also auch ein Variablenname. Diese Variable kann einen beliebigen String beinhalten.
Genau, das war mir jetzt auch klar. In PHP gibt es eben $a = 4; $b = "a"; echo $$b; //4
Wird aber nicht verwendet.
bzw. eben $myString = "abc"; $myArray["abc"] = "def"; echo $myArray[$myString"; // "def";
Das schon, wie ich dann eben auch bei meinem Script.
Gruß
jobo