Hauptmenü

Untermenü

OOP/DOM-Scripting JavaScript - Praxistutorial 2 - array_reverse

1. Die Abschnitte

2. Und noch eine Besonderheit

Kommen wir nun zu einem ganz besonderen Problem. Wir wollen jetzt die PHP-Funktion array_reverse für JavaScript nachbauen. Aus lauter Faulheit nennen wir die Methode aber nur reverse.


Array.prototype.reverse = function ()
{  
  var tmp_arr = new Array();
  for (var this.length 1>= 0i--)
  {      
    tmp_arr.push (this[i]);
  }
  return tmp_arr;
}
test arr_2.reverse();
alert (test);

Erläuterung

Obiger Code funktioniert bei JavaScript nur mit fortlaufendem numerischem Index bei Arrays. Zu der grundsätzlichen Problematik könnt ihr euch hier informieren. Wir laufen also rückwärts durch das Array und hängen die einzelnen Werte wie gehabt mit push an tmp_arr an. Die zusätzlichen Methoden werden natürlich nicht berücksichtigt, da sie keinen numerischen Index haben.

3. Und ein dickes Aber!

Die Methode reverse gibt es schon bei JavaScript. Und sie macht genau das, was wir hier nachprogrammiert haben. Inklusive der fehlenden Fähigkeit, "assoziative" Arrays zu durchlaufen.

Was ist jetzt passiert?

Ganz einfach. Wir haben eine bereits existierende Funktion/Methode mittels prototype überschrieben! Allerdings gibt es noch eine Besonderheit. Sie wird nicht im Array-Objekt als zusätzliches Element gespeichert. Ruft mal wieder spaßeshalber in_array samt alert-Ausgabe auf. Da wird euer reverse nicht erscheinen! Warum? Ach, keine Ahnung, ich werde diese Sprache eh nie wirklich verstehen.

Ein Tipp

Überschreibt niemals per prototype etwas, was eh schon existiert. Damit werdet ihr eure Kollegen unter Umständen in den Wahnsinn treiben. Wenn euch eine bereits vorhandene Funktion mit ihren Möglichkeiten nicht gefällt, so baut euch eine neue unter anderem Namen. In diesem Fall könntet/solltet ihr euch an PHP orientieren und sie array_reverse nennen.


Array.prototype.array_reverse = function ()
{  
  ...
}

4. Ich hoffe

..., ich habe euch einen ersten Einblick in das Prototyping geliefert. Eigentlich ist es meiner Meinung nach ein ziemlich kruder Ansatz, der nur einen Zweck erfüllen soll. Die fehlenden Möglichkeiten von JavaScript sollen wir mal schön selber nachprogrammieren.

zurück zum vorherigen Abschnitt