Функции Getter позволяют вместо синтаксиса obj.meth
вместо obj.meth()
, я хотел бы создать анонимный один из них для возврата из другой функции. function get():Object { }
- недействительный синтаксис. Я не думаю, что Flex предлагает простой способ получить эту функциональность, если это возможно?Возврат анонимной функции getter в Flex/Actionscript?
ответ
Вы можете переопределить поведение объекта по умолчанию, расширив flash.utils.Proxy.
Я сделал очень простой онлайн пример кода @ wonderfl.net
http://wonderfl.net/c/ngtC
Я реализовал «setAnonymousGetter», чтобы зарегистрировать анонимную функцию геттер.
В 'getProperty', если свойство является анонимным getter, выполняет 'apply' и возвращает его результат, в противном случае возвращает значение свойства.
Если я понимаю, вы хотите создать анонимную функцию getter? Зачем? Какую возможную цель это может случиться?
Если вы хотите создать свойства на лету, вы можете сделать с помощью объекта или словаря:
myObject['newProperty'] = something;
«newProperty» может быть все, что вы хотите, в том числе другой переменной.
Поскольку функция может делать намного больше, чем просто возвращать или содержать значение, и если я не был обманут, анонимные функции Actionscript являются правильными закрытиями и могут использовать внешние контексты, что делает их значительно мощными. Должен быть способ динамически создавать функции getter, поскольку вы можете динамически создавать обычные функции, даже динамически добавлять их в классы. В Python вы можете создать объект дескриптора, перегрузив '__get __()', и в то время как AS не имеет перегрузки оператора, от этого он не борется. – Kevin
Да, функция может сделать намного больше, чем вернуть значение. Да, анонимные функции могут использоваться как правильные закрытия. Однако методы get нельзя вызывать как регулярную функцию. Они должны вызываться с использованием обозначения свойства объекта. Традиционные методы не имеют такого ограничения. Почему вы не можете использовать «обычную» анонимную функцию? Почему вы настаиваете, что это должна быть функция get? – JeffryHouser
Большое спасибо. :) – Kevin
Очень творческий подход. Но это похоже на гораздо большую работу, чем просто добавление новых свойств по мере необходимости, как этот myObject ['newProperty']. – JeffryHouser