JavaScript-Funktionen überschreiben

JavaScript

Mit JavaScript ist es sehr einfach Funktionen zu überschreiben. Man weißt dem Funktionsnamen einfach eine andere Funktion zu. Beispiel:

var myFunction = function() {
  // do some stuff...
};

myFunction = function() {
  // do other stuff...
};

Es ist aber auch möglich die vorhandene Funktion zu erweitern, um z.B. davor oder danach etwas auszuführen. Das kann dann z.B. so aussehen:

myFunction = (function() {
  var oldMyFunction = myFunction;

  return function() {
    // do some stuff before...

    oldMyFunction.apply(this, arguments);

    // ... and after
  }
})();

Die neue Variable oldMyFunction ist nötig, da sich die Funktion sonst immer wieder selbst aufruft. Durch die Verwendung von apply() und dem Array arguments müssen wir uns nicht um die Parameter kümmern. Es werden alle übergebenen Parameter durchgeschleift.

Mit so einem Code gewinnt man sicherlich keinen Schönheitswettbewerb und dem einfachen Verständnis dient es sicherlich auch nicht, aber gerade für Module die existierenden Code erweitern müssen kann es durchaus nützlich sein.