JavaScript でできること
- 関数のコードを文字列として取得する
- 文字列にコードを指定して新しい関数を作成する
すべてのオブジェクトにはtoString()
メソッドがあります。関数の場合、コードを返します (オーバーライドされない限り)。
cool.lol.toString();
戻りますfunction() { // contents here }
。
この文字列から関数の本体を抽出しましょう。直後に始まり{
、最後の を除くすべてが含まれます}
。
var code = cool.lol.toString();
var body = code.substring(code.indexOf('{') + 1, code.length - 1);
次に、さらにものを追加します
var newBody = body + '// i would like to add my own stuff here!!!';
コンストラクターを使用して新しい関数を作成しますFunction
。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
cool.lol = new Function(newBody);
もちろん、新しい関数が引数も保持する必要がある場合は、さらに作業が必要です (関数コードから引数を解析して、Function
コンストラクターにパラメーターとして渡す必要があります)。簡単にするために、この場合、関数には引数がないと仮定しました。
実装例:
http://jsfiddle.net/QA9Zx/