Недокументированное свойство Function.length ?
Как узнать количество аргументов в функции ? К примеру функции изинга, количество параметров в которых обычно меняется от 4-х до 6-х.
Можно посмотреть что выдаст метод flash.utils.describeType(), передав в качестве аргумента объект содержащий функцию. А если мы не знаем кому принадлежит функция? Например статическая или пакетная функция.
Случайно спутав массив с функцией, в убогом редакторе кода Flash 9, случайно нашёл свойство length и экземпляра функции:
Применив к любой функции метод describeType, можно найти это поле length. Оказывается это геттер, возвращающее целое число.
Нигде в доках не смог найти этой фичи.
One Response to 'Недокументированное свойство Function.length ?'
Leave a Reply
You must be logged in to post a comment.

on August 30th, 2009 at 2:00 pm
Похожая штука описана в оффициальном русской версии руководства по AS3.
У каждой функции есть объект arguments:
[quote]
Если параметры передаются в функцию, можно использовать объект arguments для доступа к информации о
параметрах, переданных функции. Наиболее важными для объекта arguments являются следующие аспекты.
• Объект arguments является массивом, содержащим все параметры, переданные функции.
• Свойство arguments.length сообщает о числе параметров, переданных функции.
• Свойство arguments.callee передает ссылку на саму функцию, которая очень полезна при рекурсивных
вызовах выражений function.
Примечание. Объект arguments недоступен, если какой-либо параметр имеет имя arguments, а также в
тех случаях, когда используется параметр … (rest).
[/quote]