Процедурный доступ к списку параметров функции в actionscript 2.0 - PullRequest
2 голосов
/ 10 июня 2009

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

for (var member in obj) {
    if (obj[member] instanceof Function) {
        var f:Function = obj[member];
        ...
    }
}

Есть ли способ получить список параметров функции в actionscript? Например, могу ли я написать функцию, которая делает что-то вроде этого?

function getFunctionArguments (f:Function) : Array {
    var argumentArray:Array = new Array();
    for (...) {
        ...
        argumentArray.push({ name:<argumentName>, type:<argument type> });
    }
    return argumentArray;
}

Если так, что мне заполнять в эллипсах?

1 Ответ

2 голосов
/ 10 июня 2009

Nosirree. Я хотел бы дать вам обходной путь, но нет способа проанализировать сигнатуру функции, подобную этой.

Что вы можете сделать, когда функция на самом деле называется , внутри нее вы можете просматривать аргументы независимо от сигнатуры, просматривая объект arguments. Как в:

function doSomething() {
    if (arguments.length > 0) {
         if (typeof arguments[0] == "string") {
             ....
         }
    }
}

и так далее. Но даже тогда нет способа узнать имя аргументов в сигнатуре функции (и это прекрасно работает, даже если в сигнатуре нет аргументов, как указано выше).

...