Der Aufruf
var1.attach("var2")
gefällt mir noch nicht ganz, wäre cool, wenn man den Namen des Observer-Objekts automatisch übergeben könnte.
Der Name ist irrelevant. Du kannst das Objekt übergeben. Du solltest nicht mit Variablennamen und eval() arbeiten, wenn du auch Objekte oder Funktionen übergeben kannst.
Das Interface sollte so funktionieren:
var1.addObserver(var2)
Oder attach, wie es bei dir heißt.
Das ist auch unproblematisch zu implementieren.
this.aObservers = new Array();
Der Array-Literal [] schreibt sich kürzer und ist etwas schneller als new Array.
this.setCurrVal = function(_inCurrVal)
{
var j = 0;
Hier deklarierst du eine Variable, die du nicht nutzt, aber nutzen solltest.
for ( this.j = 0; this.j < this.aObservers.length; this.j++)
{
var oObj = eval(this.aObservers[this.j]);
oObj.setCurrVal(_inCurrVal);
}
Wenn du das Objekt anstatt des Namens übergibst, so kannst du dir das eval() sparen und bekommst mit this.aObservers[j] direkt das gewünschte oADSVar-Instanzobjekt.
this.attach = function (_sName)
{
this.aObservers.push(_sName);
Benenne die Variable um, speichere einfach das Objekt im Array.
Mathias