Christoph: Anfängerfrage objektorientierte Programmierung

Beitrag lesen

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...