Frage

Ich habe eine AS -Klasse mit Setter- und Getter -Funktionen. Ich muss eine der Instanzen dieser Klasse so optimieren, dass die Setterfunktion die Eingabe verarbeitet, bevor sie der lokalen Variablen zugewiesen wird.

Oder was soll ich in einer ausgearbeiteten Weise in dem folgenden Beispiel verwenden, anstatt $$$?

class MyClass{
    private var _legend:Array;
    function set legend(legend:Array):void{
        _legend= legend;
    }
    function get legend():Array{
        return _legend;
    }
    function someFunction():void{
        foo();
    }
}
var mc:MyClass = new MyClass();
mc.someFunction = function():void{
    bar();
}
mc.$$$ = new function(legend:Array):void{
    _legend = process(legend);
}
War es hilfreich?

Lösung

Normalerweise würden Sie die Myclass unterklassen, um das Verhalten (Polymorphismus) der MyClass zu ändern.

class MySubClass extends MyClass {
        function set legend(legend:Array):void{
                // do your checking here. Then call the 
                // setter in the super class.

                super.legend = legend;
        }
}

Andere Tipps

Warum passieren Sie die Instanz nicht eine verarbeitete Eingabe?

mc.legend = process(legend);

Wenn dies nicht möglich ist, können Sie den Setter in MyClass ändern und einen optionalen Booleschen zur Verarbeitung nehmen.

function set legend(legend:Array, flag:bool = false):void{
            _legend = flag ? process(legend) : legend;
}

Beachten Sie, dass sich die Vererbung des Prototyps nicht auf eine bestimmte Instanz beschränkt. Aus der Dokumentation:

Der Prototyp -Vererbung - ist der einzige Vererbungsmechanismus in früheren Versionen von ActionScript und dient als alternative Form der Vererbung in ActionScript 3.0. Jede Klasse hat ein zugeordnetes Prototypobjekt, und die Eigenschaften des Prototyps Objekt werden von allen Instanzen der Klasse gemeinsam genutzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top