AngularJSとかで変数名から注入するサービスを習得してくれる所でやっている処理。
Qiitaで素晴らしいソースを発見。
function getParams(func) {
var source = func.toString()
.replace(/\/\/.*$|\/\*[\s\S]*?\*\/|\s/gm, ''); // strip comments
var params = source.match(/\((.*?)\)/)[1].split(',');
if (params.length === 1 && params[0] === '')
return [];
return params;
}
関数オブジェクトのtoString()がソースコードを返してくれるのでそれを利用しているとのこと。
使い方としては関数をそのまま渡せばOK。