¿Cómo puedo anular una función de establecimiento en tiempo de ejecución en ActionScript?

StackOverflow https://stackoverflow.com/questions/602590

Pregunta

Tengo una clase AS con funciones de setter y getter. Necesito ajustar una de las instancias de esta clase para que la función de establecimiento procese la entrada antes de asignarla a la variable local.

o, de una manera más elaborada, ¿qué debo usar en lugar de $$$ en el siguiente ejemplo?

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);
}
¿Fue útil?

Solución

Normalmente, sería una subclase de MyClass para modificar el comportamiento (polimorfismo) de MyClass.

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;
        }
}

Otros consejos

¿Por qué no le pasas a la instancia una entrada procesada?

mc.legend = process(legend);

Si esto no es posible, puedes modificar el configurador en MyClass y tomar un booleano opcional para hacer el procesamiento.

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

Tenga en cuenta que la herencia del prototipo no se limita a una instancia en particular. De la documentación:

  

Herencia de prototipo: es el único mecanismo de herencia en versiones anteriores de ActionScript y sirve como una forma alternativa de herencia en ActionScript 3.0. Cada clase tiene un objeto prototipo asociado, y todas las instancias de la clase comparten las propiedades del objeto prototipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top