Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Методы класса Function (http://www.flasher.ru/forum/showthread.php?t=167463)

square 10.09.2011 21:22

Методы класса Function
 
Зачем нужен метод apply() класса Function, в связанном методе, т.е метод внутри класса.
Роюсь в чужом коде, а там написано:
Код AS1/AS2:

//пакет
//обьявление класса
//конструктор
...
 
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

Ну так можно просто сделать:
Код AS3:

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() использоваться в виде:
Код AS3:

paramName["funcName"].apply(this, arr);

Как несложно догадаться строку с именем метода можно сформировать при выполнении кода, или же получиться откуда-то извне.
Я использую периодически в общении с сервером, когда пачка серверных команд и пачка обработчиков оных.
Вместо свича на стопицот значений делается одна строчка как я привел в примере, а имя метода например совпадает с серверным, а сервер в своих ответах это имя присылает.
Как-то так.

square 10.09.2011 21:57

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

Dukobpa3 10.09.2011 22:00

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

dimarik 11.09.2011 00:02

Цитата:

Сообщение от square (Сообщение 1030209)
А в моём то случае зачем так сделали, просто чтобы массив передать?

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


Часовой пояс GMT +4, время: 20:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.