【Javascript】関数の引数名を習得する。

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。