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

Beitrag lesen

Überlege dir, was die einzelnen Bit-Objekte wirklich enthalten bzw. tun sollen und erzeuge genau solche Objekte dann.
Diese Bit-Objekte speicherst du wie gesagt in einem Array [...] und deklarierst noch eine Funktion, die das Array durchläuft und alles Notwendige mit ihnen anstellt.

Das geht auch mit den Methoden direkt im bitObjects-Array:

  
/************************************************************************/  
var bitObjects = [];  
  
bitObjects.newBit = function(inChannel) {  
  
    this[inChannel] = {  
  
      value: undefined,  
      channel: inChannel,  
      setValue: function(fromAJAX) { return this.value = +((fromAJAX & 1<<this.channel) > 0); }  
  
      /* hier weitere Eigenschaften und Methoden eines Bit-Objekts */  
    };  
  
    return this;  
};  
  
bitObjects.updateBits = function(fromAJAX) {  
  
    var i, bit, len = this.length;  
    for(i=0; i<len; i++) { (bit = this[i]) && bit.setValue(fromAJAX); }  
    return this;  
};  
  
/******************** Testlauf: *****************************/  
  
// Channel 0 anlegen:  
bitObjects.newBit(0);  
// Channel 2 anlegen:  
bitObjects.newBit(2);  
// Channel 4 anlegen und alle aktualisieren mit 21 (10101):  
bitObjects.newBit(4).updateBits(21);  
  
alert(bitObjects[0].value); // 1 ( Wert in Channel 0)  
alert(bitObjects[2].value); // 1 ( Wert in Channel 2)  
alert(bitObjects[4].value); // 1 ( Wert in Channel 4)  
  
// Mit 11 (01011) aktualisieren und den Wert von Channel 4 speichern:  
var val4 = bitObjects.updateBits(11)[4].value;  
  
alert(bitObjects[0].value); // 1 ( Wert in Channel 0)  
alert(bitObjects[2].value); // 0 ( Wert in Channel 2)  
alert(val4);                   // 0 ( Wert in Channel 4)  

Gruß, Don P