PDA

Просмотр полной версии : Методы класса Function


square
10.09.2011, 21:22
Зачем нужен метод apply() класса Function, в связанном методе, т.е метод внутри класса.
Роюсь в чужом коде, а там написано:

//пакет
//обьявление класса
//конструктор
...

public function myMethod():void
{
requestData.apply(this,arr);
}

private function requestData(...params):void
{
var arr:Array = params as Array;
arr2.push(arr);
}

Зачем так делают? И вообще это когда нибудь нужно?
В документации написано: "указывает значение текущий обьект, используемого в любой функций"
Типа можно передать this, методу из другого класса, и там его использовать?

dimarik
10.09.2011, 21:27
Можно null передать первым параметром. А apply используют когда нужно передать массив.

square
10.09.2011, 21:34
Ну так можно просто сделать:

var arr:Array = ['one','two','three'];
reseptionArr(arr);
...
private function reseptionArr(params:Array):void
{
for (var i:uint = 0; i < params.length; i++)
{
trace(params[i]);
}
}

Dukobpa3
10.09.2011, 21:44
еще удобно apply() и call() использоваться в виде:
paramName["funcName"].apply(this, arr);
Как несложно догадаться строку с именем метода можно сформировать при выполнении кода, или же получиться откуда-то извне.
Я использую периодически в общении с сервером, когда пачка серверных команд и пачка обработчиков оных.
Вместо свича на стопицот значений делается одна строчка как я привел в примере, а имя метода например совпадает с серверным, а сервер в своих ответах это имя присылает.
Как-то так.

square
10.09.2011, 21:57
А в моём то случае зачем так сделали, просто чтобы массив передать?

Dukobpa3
10.09.2011, 22:00
ну я весь код не видел, не могу сказать. Но как минимум там один метод публичный а второй приватный, возможно публичный метод сделан типа для автозапуска чего-то там с предустановленными параметрами.
Но все-равно почему именно апплай не понятно.

dimarik
11.09.2011, 00:02
А в моём то случае зачем так сделали, просто чтобы массив передать?

Ну да. А как вы еще передадите ...params?
Не ссылку на массив, а сами значения.