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