Итак, допустим, что у нас есть название нужной нам функции в виде строки (то есть тип данных String). И нам надо с помощью этого String-а вызвать функцию. Как быть?
Можем сделать так...
Код ActionScript 3.0:
function myFunc()
{
trace("myFunc")
}
var myFunc_str:String = "myFunc";
myFunc_str();
но эта попытка закончится сообщением об ошибке. Печалька :-(
Как же быть?
А надо лишь чуть-чуть изменить запись...
Код ActionScript 3.0:
function myFunc()
{
trace("myFunc")
}
var myFunc_str:String = "myFunc";
this[myFunc_str]();
или
Код ActionScript 3.0:
function myFunc()
{
trace("myFunc")
}
this["myFunc"]();
И всё работает!!! :-)
Как это может пригодится?
Давайте рассмотрим пару примеров, где это можно использовать:
[ 1-й пример ]
В массиве хранятся имена функций; проходим циклом по массиву и вызываем функции.
Код ActionScript 3.0:
var arr:Array = ["myFunc_1", "myFunc_2"];
function myFunc_1()
{
trace("myFunc_1")
}
function myFunc_2()
{
trace("myFunc_2")
}
var i:uint = 0;
while(i < arr.length)
{
this[arr[i]]();
i++;
}
[ 2-й пример ]
Ещё более полезный пример: генерируем имена функций на лету (поверьте, иногда очень пригождается).
Код ActionScript 3.0:
function myFunc_1()
{
trace("myFunc_1")
}
function myFunc_2()
{
trace("myFunc_2")
}
var l:uint = 2;
var i:uint = 0;
while(i < l)
{
this["myFunc_"+ (i + 1)]();
i++;
}
На самом деле, примеров можно придумать и больше. Но, я думаю, что суть понятна :-) А у меня на этом всё.