Ü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