2011-01-09 10 views
1

私は関数の2つの名前の間で選択することができないようです:名前を付ける:createFunctionDelegate()とcreateDelegateFunction()?

createFunctionDelegate()createDelegateFunction()

重要なのは、関数の目的は、2番目の引数のコンテキストで、指定されたコールバック関数を呼び出す新しい関数を作成することです。例えば:foo.init()が実行されると

var foo = { 
    init: function() { 
     setTimeout(App.createFunctionDelegate(this.method, this)); 
    }, 

    method: function() {} 
} 

、それはthis(FOO)のコンテキスト内で呼び出される別の関数(this.method)に委譲実行関数を呼び出すタイムアウトを設定します。

とにかく、私はこの機能にどのような名前を付けるべきかわかりません。これは私にとって大事なことです。なぜなら、私は何百もの場所でそれを使うつもりで、時にはそれをタイプします。これは変更する必要があります、私は選択する必要があります。

+0

createDelegateはそうこれはメタ機能の一種であるため、この例でこの質問をするのが賢明です。これは、 'decode_image()'や 'image_decode()'、 'calculate_date()'や 'date_calculate()'のようなすべての通常の関数で発生する非常に一般的な問題ですか? – AndreKR

+0

ねえ、私は関数のように聞こえたので、私はあなたの呼び出し中に呼び出すことができる関数を返す関数を作った。 – BoltClock

+1

:Dコンピュータ科学には2つの困難な問題があります。キャッシュの無効化、および名前を付ける。 – Paul

答えて

3

私はどちらも使用しません。あなたがしたいことは、ES5のbind()によって提供されます。 hereと記載されているように、まだ存在しない場合はFunction.prototype.bindと定義します(ただし、説明と可能性のある欠点を慎重に読んでください)。

このようにして、ネイティブ機能がサポートされている場合は、これを使用してください。

+0

興味深いことに、チップのおかげで、私はそれを見てみましょう。 – Tower

0

ただcreateDelegate(this.method、this)についてはどうですか?サイドノート、私はこのような方法を見て(とそれを書かれた)きた他の場所としては、PARAMの順序はコンテキストである

、機能、それはかしら(これ、this.method)

関連する問題