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



Массив аргументов - часть 2


getAverage = function( _args_ ) { var total = 0; for(var i = 0; i < arguments.length; i++) { total += arguments[i]; } return total / arguments.length; } this.( getAverage(4,5,3,2,6,10) ); // вывод - "5" this.( getAverage(54,45,96) ); // вывод - "65"

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

Есть правда и сюрпризы. Оказывается, массив аргументов - это НЕ МАССИВ! Можно узнать его длину, но нельзя использовать такие методы, как pop() или push(). Другой сюрприз, а возможно, что просто жучок - arguments[0] и первая переменная в списке переменных это не один и тот же объект. Поэтому, если в методе с аргументами (arg0, arg1) мы поменяем значение arg0, то arguments[0] все равно будет иметь старое значение. Имейте это в виду при написании программ... (может, это не баг, а фича! Интересно, а почему ничего не сказано про остальные аргументы? - прим.пер.)

Ну и последнее, что надо бы знать про этот "массив", это то, что у него есть одно интересное свойство с именем callee. Понятное дело, что набрать слово callee проще, чем prototype или __proto__, но про него читайте в следующем разделе...

<<

   ООП во Flash 5    >>




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