как переопределить функцию установки во время выполнения в ActionScript?
-
03-07-2019 - |
Вопрос
У меня есть класс AS с функциями установки и получения.Мне нужно настроить один из экземпляров этого класса, чтобы его функция установки обрабатывала входные данные перед присвоением их локальной переменной.
или, более подробно, что мне следует использовать вместо $$$ в приведенном ниже примере?
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);
}
Решение
Обычно вы создаете подкласс MyClass, чтобы изменить поведение (полиморфизм) 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;
}
}
Другие советы
Почему бы вам не передать экземпляру обработанный ввод?
mc.legend = process(legend);
Если это невозможно, вы можете изменить установщик в MyClass и использовать необязательное логическое значение для обработки.
function set legend(legend:Array, flag:bool = false):void{
_legend = flag ? process(legend) : legend;
}
Обратите внимание, что наследование прототипов не ограничивается конкретным экземпляром.Из документации:
Наследование прототипа — единственный механизм наследования в предыдущих версиях ActionScript и альтернативная форма наследования в ActionScript 3.0.С каждым классом связан объект-прототип, а свойства объекта-прототипа являются общими для всех экземпляров класса.