PHPの可変関数はちょっと便利なので、同じようなリレフレクションというか、メタプログラミングをやりたかった。
(スクリーンショット 2013-05-25 19.19.05)
文字列で指定して関数を実行
var f = console["log"] f(1234) #=> 1234
これは、オブジェクトであることを利用している
window["alert"](111)
のようにしてもOK.
node の場合
#!/usr/bin/env node path = require('path'); str = process.argv[2]; name = process.argv[1]; name = path.basename(name) ; console.log(global[name](str));
このようにすると global にある関数をコマンドラインから利用できる。
また、関数Objectはcall メソッドでも大丈夫
var f = console["log"] f.call(console,1234) #=> 1234
call 意外とデキる子
参考資料
http://stackoverflow.com/questions/773184/get-javascript-function-object-from-its-name-as-a-string
https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/Function/call
2013-05-26修正
f.call(f,1234) #=> 1234f.call(console,1234) #=> 1234
修正しました。