Mit JavaScript können Sie
- den Code der Funktionen als String abrufen
- neue Funktionen durch Angabe einer Zeichenkette mit Code erstellen
Jedes Objekt hat eine toString()
Methode. Bei Funktionen wird ihr Code zurückgegeben (sofern er nicht überschrieben wurde).
cool.lol.toString();
gibt zurück. function() { // contents here }
.
Extrahieren wir den Körper der Funktion aus dieser Zeichenkette. Er beginnt unmittelbar nach {
und enthält alles außer dem letzten }
.
var code = cool.lol.toString();
var body = code.substring(code.indexOf('{') + 1, code.length - 1);
Dann fügen wir weitere Dinge hinzu
var newBody = body + '// i would like to add my own stuff here!!!';
und erstellen Sie eine neue Funktion mit der Function
Konstrukteur.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
cool.lol = new Function(newBody);
Natürlich gibt es mehr Arbeit zu tun, wenn die neue Funktion auch Argumente behalten muss (Sie müssen sie aus dem Funktionscode auslesen und sie dann als Parameter an die Function
Konstrukteur). Der Einfachheit halber habe ich in diesem Fall angenommen, dass es keine Argumente für die Funktion gibt.
Ein Implementierungsbeispiel:
http://jsfiddle.net/QA9Zx/