molily: Schlüsselposition eines Array in Variable speichern

Beitrag lesen

Hallo,

Ich schreibe in meinem Script an verschiedenen Stellen einen Wert in ein Array:

SpielerdatenArray[id][1] = 90

var spielzeit = SpielerdatenArray[id][1];
spielzeit = 90;

Das sieht von außen stark danach aus, als könnte hier eine Objektorientierung helfen.

foo[bar][5].qux.murks.lulz[123] ist natürlich nichts, was man ständig wiederholen will. Aber es ist auch ein Zeichen, dass die Aufgaben nicht sauber getrennt sind und die Daten unstrukturiert gespeichert und gekapselt sind. Dort, wo du die fraglichen Daten lesen und setzen willst, solltest du nur objekt.eigenschaft bzw. objekt.eigenschaft = schreiben müssen. Und eigentlich auch nichts anderes schreiben können.

Hier hast du vermutlich eine Anzahl von Spielen, Spielern und Spielereinsätzen (bspw. hat Nadine Angerer beim Viertelfinalspiel der WM 2011 vermutlich 90 Minuten gespielt). Dann würde ich das auch so in Objekten umsetzen, die ggf. mit Has-many- und Belongs-to-Beziehungen verknüpft sind. Sodass du letztlich nur schreiben musst:

  
var angerer = new Spielerin({ name: 'Nadine Angerer' });  
var einsatz = new Spieleinsatz(angerer, { spielzeit: 90 });  
// …  
einsatz.spielzeit = 90;  
alert(einsatz.spielzeit);  

Dass Spieleinsatz nun in Spielerin referenziert wird, das Spieleinsatz in der einer Klasse Spiel referenziert wird, dass Spielerin in Mannschaft referenziert wird… das ist alles unbenommen.

Dort, wo du nun die Spielzeit lesen und setzen wilst, brauchst du jetzt auch nicht mehr alle Daten, sondern nur das das konkrete Objekt. Dadurch reduzierst du die Abhängigkeiten und die Komplexität des Codes.

Ich habe übrigens mal einen Einsteigervortrag zu Objektorientierung in JavaScript gehalten, falls es dich interessiert. Ferner empfehle ich meinen Artikel Organisation von JavaScripten sowie die überarbeitete und ergänzte Version.

Mathias