読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

関数の仮引数名を取得する。

prototype.jsをインポートすると追加される「Function#argumentNames」を使うと、「関数の仮引数名一覧」を取得できます。

// 関数。
var f = function( mii, tora, shiro  ) {}

// 仮引数一覧を取得
var out = document.getElementById( "out" );
out.innerHTML += f.argumentNames().join(",") + "<br/>";

実行結果はこちら


どうやって取得してるんだ?と思ってコードを見てみると、メソッドのtoString()で取得したソースを解析して取り出しているようです。なるほどー。以下、prototype.jsより抜粋です。

Object.extend(Function.prototype, {
  argumentNames: function() {
    var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
    return names.length == 1 && !names[0] ? [] : names;
  },
...

DIコンテナでのコンポーネントの自動インジェクションとかに使えそうですね。コンストラクタの仮引数名に対応するコンポーネントが登録済みであれば引数として渡す、とか。