2010-03-03 6 views
12

Ich möchte einen optionalen Datenparameter an einige Callbacks übergeben, aber nur an Callbacks, die einen einzelnen Parameter unterstützen; Im Moment habe ich eine moderate Codebasis von Callbacks, die einen Parameter überhaupt nicht akzeptieren können. Wie kann ich überprüfen, welche Parameter ein Function Objekt unterstützt?Wie kann ich die Argumentanzahl einer Funktion zur Laufzeit in Flex 3 ermitteln?

+0

Um ehrlich zu sein, riecht das Design ein wenig komisch. Können Sie etwas Code veröffentlichen, der zeigt, was Sie vorhaben? Nach meinem besten Wissen glaube ich nicht, dass es eine Möglichkeit gibt, eine Funktion von außen zu untersuchen, um die Anzahl der Parameter in JavaScript oder ActionScript zu bestimmen (anders als Patrick für ActionScript-Klassenmitglieder beschreibt) typischerweise im Voraus vom Entwickler bekannt. –

+1

Chris? Haben Sie jemals eine Antwort auf diese Frage gefunden? Wenn ja, würde es Ihnen etwas ausmachen, ein Update zu posten? – Joshua

Antwort

2

Wenn Ihre Funktion wird in einem class erklärt verwenden die functiondescribeType es wird eine XML zurückgeben können Sie analysieren und mit seinen Argumenten in Ihrer Funktionsnamen suchen

+0

Es ist nicht; Dies ist eine Lambda-Funktion, die als Callback übergeben wird. Ich kann nicht herausfinden, wie ich mehr Informationen daraus gewinnen kann. –

1

Die Argumente Array ist ein Array aller Parameter in eine bestandene Funktion. Vielleicht suchen Sie das?

function traceArgArray(x:int):void 
{ 
    for (var i:uint = 0; i < arguments.length; i++) 
    { 
     trace(arguments[i]); 
    } 
} 

Beispiel aus livedocs.adobe.com genommen

+0

Das ist nicht wirklich hilfreich. Ich weiß, was die Argumente von der Funktion her sind, ich schaue mir an, wie ich herausfinden kann, was sie außerhalb des Funktionsumfangs der Funktion sind. –

21

Funktion ist ein Objekt. Jede Funktion verfügt über eine schreibgeschützte Eigenschaft mit der Bezeichnung length, die die Anzahl der für die Funktion definierten Parameter speichert. Verwenden Sie es.

Verwandte Themen