Don P: OOP: Event an Member-Variable hängen?

Beitrag lesen

Hallo,

Hier mal ein Beispiel, wie das etwa aussehen könnte, ganz ohne Vererbung:

var bitController = {  
  
  bitObjects: [],  
  
  bit: function(channel) {return bitObjects[channel]; },  
  
  newBit: function(inChannel) {  
  
    !bitObjects[inChannel] && bitObjects.push(  
       {  
         channel: inChannel,  
         value: undefined,  
         setValue: function(inCurrVal) {  
             this.value = +(inCurrVal >= 1<<this.channel);  
         }  
  
         /* hier evtl. weitere Eigenschaften und Methoden */  
       }  
    );  
    return bitController;  
  },  
  
  updateBits: function(inCurrVal) {  
  
    var i, oo = this.bitObjects, len = oo.length ;  
    for(i=0; i<len; i++) {oo.setValue(inCurrVal);}  
  }  
  
};

bitController.newBit(1); // Objekt für Bit 1 anlegen
bitController.newBit(5); // Objekt für Bit 5 anlegen
bitController.updateBits(bitsVonHardware); // Alle aktualisieren
bitController.newBit(6).updateBits(bitsVonHardware); // Obj. f. Bit 6 anlegen & alle aktualisieren

var ch5_Value = bitController.bit(5).value; // Bit 5 auslesen

Alles ungetestet, nur mal so als Denkanstoß.

updateBits() könnte man problemlos so gestalten, dass für jedes existierende Hardware-Bit ggf. erst ein neues BitObjekt angelegt wird, falls es noch nicht existiert.

Gruß, Don P