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