Macromedia Flash 5. Объектно - ориентированное программирование



Массив аргументов


  Недокументированная особенность!

Необходимо сказать, что массив аргументов является недокументированной особенностью со всеми вытекающими из этого последствиями. Но, поскольку очень сильно похоже на то, что эта особенность будет работать и в будущих версиях Flash, хотя я и не даю никакой гарантии (она есть в дальнейших версиях ECMAscript и позволяет сделать то, чего невозможно добиться другими способами), используйте ее только тогда, когда без нее не обойтись. В таком случае если из Flash6 эту штуку все-таки вырежут, то вам придется поменять минимум кода.

Есть одна вещь, которая обособляет конструкторы вместе с методами - им можно слать сообщения. Методы могут даже возвращать сообщения (конструкторы, правда возвращают экземпляры объектов). Об этом мы говорили в разделе про аргументы - аргументы функции это сообщения и возвращаемая величина тоже есть сообщение. Теперь мы поближе рассмотрим механизм передачи этих сообщений.

На самом деле аргументы метода в ActionScript находятся в двух местах. Во-первых, создается новое локальное свойство (локальное по отношению к запущенному активируемому объекту) для каждого имени, которые перечислены в определении метода между скобками (arg1, arg2). Второе же место где это добро лежит - массив с именем arguments (будем его обозначать, как arguments[], чтобы было понятно, что это массив). В этом массиве аргументы хранятся в том же порядке, в котором они переданы в метод. То есть в вышеуказанном примере массив будет состоять из 2-х значений, сначала arg1 (в arguments[0]), а потом arg2 (в arguments[1]). Вот пример:

test = function( arg0, arg1 ) { trace( arg0 +" "+ arg1 ); // вывод - "1ый 2ой" this.( arguments[0] +" "+ arguments[1]); // вывод - "1ый 2ой" } test( "1ый", "2ой" );

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




Содержание  Назад  Вперед