Я люблю использовать анонимные функции, передавать функции по ссылке, объявлять функции прямо в теле другой функции и т.п. Это удобно и практично, но с этими механизмами могут возникнуть некоторые проблемы. Начиная с версии 9
Flash Player сохраняет в
this
функции её родителя. Звучит просто, но все ли понимают, что это значит и как тяжело было раньше без этого?
Например, теперь можно описать такую функцию:
public class TestClass
{
var property : Number;
function updateValue(value : Number) : void
{
TestClass(this).property = value;
}
}
и передавать её куда угодно:
var func : Function = new TestClass().updateValue;
func(555);
и быть уверенным, где-бы её не вызвали в
this
будет экземпляр класса
TestClass
. Но я не об этом, есть более любопытные действия, которые можно производить над функциями в
Action Script, их мы их рассмотрим.