Array-Elemente an Methode übergeben
Christian S.
- javascript
0 Struppi0 Christian S.
Hi,
kann man folgendes bewerkstelligen:
var array = ["param1", "param2", "param3"];
callMethod(array);
Die Sache ist jetzt, dass ich kein Array an die Methode übergeben möchte, sondern jedes Element des Arrays als separaten Parameter.
Das Array ist wiederrum dynmisch, daher weiß ich nie, wieviele Parameter die Methode dann tatsächlich bekommt.
Danke+
Gruß!
Die Sache ist jetzt, dass ich kein Array an die Methode übergeben möchte, sondern jedes Element des Arrays als separaten Parameter.
Warum?
Das Array ist wiederrum dynmisch, daher weiß ich nie, wieviele Parameter die Methode dann tatsächlich bekommt.
Dann ist es doch gut, wenn du ein Array übergibst, dann kannst du mit array.length leicht feststellen, weiviel Parameter du übergeben hast.
Struppi.
Die Sache ist jetzt, dass ich kein Array an die Methode übergeben möchte, sondern jedes Element des Arrays als separaten Parameter.
Warum?
Weil es sich um eine Callback Methode von einem Server Call handelt. Wir haben ein System, mit der man mehrere Rückgabewerte haben kann, daher das Array.
Genau gesagt, bezieht sich die Frage auch auf ActionScript, aber das ist ja sehr ähnlich.
Ich finde es einfach schöner, wenn man sich dann die Callback Methode so definiert, wie man sie erwartet:
function callback(myString, myInt, myBoolean);
als dass man die immer erst aus einem Array fischen muss.
In 90% der Fälle hat man immer nur einen Return Value, wie man es gewohnt ist.
Da wäre es blöd, wenn man dann immer ein Array zurückgibt.
Ich finde es einfach schöner, wenn man sich dann die Callback Methode so definiert, wie man sie erwartet:
function callback(myString, myInt, myBoolean);
D.h. du weißt also doch die Anzahl der Parameter, dann sähe der Aufruf z.b. so aus:
var array = ["param1", "param2", "param3"];
callMethod(array[0], array[1], array[3]);
Aber evtl. hilft dir auch:
callMethod.apply(this, array);
Ist aber wesentlich langsamer als der direkte Aufruf, daher eher ratsam, wenn this ein Objekt ist, dass in dem Kontext von callMethod ausgeführt werden soll.
Struppi.
Aber evtl. hilft dir auch:
callMethod.apply(this, array);
Ist aber wesentlich langsamer als der direkte Aufruf, daher eher ratsam, wenn this ein Objekt ist, dass in dem Kontext von callMethod ausgeführt werden soll.
Der erste apply-Parameter kann durchaus null sein, dann wird automatisch das globale Objekt als this verwendet (ES3) bzw. this ist dann einfach null (ES5).
Mathias
Aber evtl. hilft dir auch:
callMethod.apply(this, array);
Ist aber wesentlich langsamer als der direkte Aufruf, daher eher ratsam, wenn this ein Objekt ist, dass in dem Kontext von callMethod ausgeführt werden soll.
Der erste apply-Parameter kann durchaus null sein, dann wird automatisch das globale Objekt als this verwendet (ES3) bzw. this ist dann einfach null (ES5).
Danke euch, genau das hab ich gesucht, auch gekannt, bin nur nicht drauf gekommen :-/