Moin.
Welche ist vorzuziehen? Ich tendiere zu Lösung 1, sie erscheint mir eleganter. Lösung 2 finde ich zwar simpler, dafür sind noch die öffentlichen Eigenschaften id, bild0 und bild1 dazugekommen. Gibts noch eine Lösung?
Aus Performance-Sicht ist Lösung 2 vorzuziehen: Lösung 1 erzeugt für jedes BinaerElement
-Objekt ein neues Funktionsobjekt für setzeStatus()
, während bei Lösung 2 nur einmalig ein Funktionsobjekt für statusWechsel()
erzeugt wird.
Lösung 2 lässt sich übrigens noch eleganter schreiben:
// Konstruktor für generische Fenster
function Fenster(id, bild0, bild1) {
this.id = id;
this.bild0 = bild0;
this.bild1 = bild1;
}
// Funktionsobjekt wird nur einmalig erzeugt
Fenster.prototype.setzeStatus = function(wert) {
this.status = wert;
document.getElementById(this.id).src =
(wert ? this.bild1 : this.bild0).src;
};
// Fabrik-Methoden für spezielle Fenster
Fenster.erzeugeWaag = function(id) {
return new Fenster(id, bildFensterWaagGeschl, bildFensterWaagOffen);
};
Fenster.erzeugeSenkr = function(id) {
return new Fenster(id, bildFensterSenkrGeschl, bildFensterSenkrOffen);
};
var fenster0 = Fenster.erzeugeWaag('fenster0'),
fenster1 = Fenster.erzeugeWaag('fenster1'),
fenster2 = Fenster.erzeugeSenkr('fenster2'),
fenster3 = Fenster.erzeugeSenkr('fenster3');
Christoph
PS: Es ist Konvention, in JavaScript die Namen von Objekt-Eigenschaften (die keine Konstruktoren sind) kleinzuschreiben...