Struppi: Anfängerfrage objektorientierte Programmierung

Beitrag lesen

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?

Ja. Du kannst diese Werte auch im Konstruktor privat machen:

function BinaerElement(id,bild0,bild1) {  
  var _id = id;  
  var _bild0 = bild0;  
  var _bild1 = bild1;  
  
  this.setzeStatus = function(wert) {  
  if (wert) document.getElementById(_id).src = _bild1.src;  
  else document.getElementById(_id).src = _bild0.src;  
  this.status = wert;  
 }  
}

Das wäre aber nur nötig, wenn du diese auch in anderen Funktionen brauchst oder auch um geeignete Defaultwerte zu benutzen.

Genau das Gleiche gilt für deine 2. Lösung, im Prinzip ist gegen öffentliche Eigenschaften nichts zu sagen, da dies ein übliche Technik in JS ist, auch wenn es OOP Puristen nicht so behagt.

Struppi.