как переопределить функцию установки во время выполнения в ActionScript?

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

Вопрос

У меня есть класс 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.С каждым классом связан объект-прототип, а свойства объекта-прототипа являются общими для всех экземпляров класса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top