Der Argumenten-Array (war in Flash 5 undokumentiert)
Diese Funktionalität war in Flash 5 zwar vorhanden, jedoch undokumentiert. Jetzt in Flash 6 wurde sie offiziell dokumentiert.
Eine Sache die Klassenkonstruktoren und Methoden so speziell macht ist, dass wir ihnen Nachrichten senden können. Methoden können sogar einen Rückgabewert liefern (Konstruktoren geben ein neues Objekt zurück, keine Nachricht). Wir haben Argumente schon angesprochen, die Nachrichten die wir senden sind die Argumente, und die Rückantwort erhalten wir über das "return" Schlüsselwort. Lassen Sie uns ein wenig genauer betrachten wie Konstruktoren und Methoden diese Argumente handhaben.
Eingehende Argumente werden an zwei Stellen in Actionscript gespeichert. Eine neue lokale Eigenschaft (lokal zum laufenden Aktivierungsobjekt) wird für jeden Namen in der Liste der Argumente erzeugt, die sich zwischen den ( ) der Funktionsdefinition deklariert wurden. Der zweite Platz an dem die Argumente gespeichert werden, ist ein Array namens "arguments" (folgend auch als arguments[] bezeichnet, um Verwirrung zu vermeiden). Sie können alle übergebenen Parameter in der Reihenfolge wie sie übergeben wurden über diesen Array ansprechen. So landet das erste Argument in arguments[0], das zweite in arguments[1] und so weiter.. Hier ist ein kurzes Beispiel:
test =
function( arg0, arg1 )
{
trace( arg0 +" "+ arg1 ); // 1st 2nd
trace( arguments[0] +" "+ arguments[1]); // 1st 2nd
}
test( "1st", "2nd" );
Wie immer gibt es auch hier ein paar Dinge zu erwähnen. Als erstes ist festzuhalten, dass auf diese Weise eine unbekannte Anzahl an Argumenten übergebbar ist. Wenn Sie eine Methode haben, die den Durchschnitt mehrere Zahlen berechnen soll, können Sie den arguments[] Array benutzen, wie z.B.:
getAverage
= function( _args_ ) {
var total = 0;
for(var i = 0; i < arguments.length; i++)
{
total += arguments[i];
}
return total / arguments.length;
}
trace( getAverage(4,5,3,2,6,10) ); // 5
trace( getAverage(54,45,96) ); // 65
Das ist einer der Hauptgründe um den arguments[] Array zu benutzen: eine unbestimmte Anzahl an Parametern zu übergeben. Bitte beachten Sie, dass die "_args_" Variable nicht notwendig ist, jedoch ist es für sich selbst und auch andere ratsam, einen Hinweis auf die "versteckten" Parameter zu geben. Diese Eigenschaft wird nur einmal beim Aufruf der Methode gesetzt, also resultiert daraus kein wesentlicher Overhead.
Eine überraschende Sache an arguments[] ist, dass es kein echtes Array darstellt. Sie können die Länge wie bei einem Array auslesen, aber sie können keine array-spezifischen Methoden wie zB. "pop()" oder "push()" aufrufen. Desweiteren ist noch zu erwähnen, dass das arguments-Objekt noch zwei Eigenschaften zur Verfügung stellt: caller und callee, dazu erfahren Sie mehr auf den folgenden Seiten.