0

私がコーヒースクリプトを書いているとき、私はこれをひどくたくさんする傾向があります(擬似コード):

$link.click (e) =>
  this._clicked(e)

CoffeeScriptで透過的にバインドする方法は本当にありませんか?私はできるようになりたいです:

$link.click =this._clicked

または、this._clickedメソッドをイベントに直接バインドし、このポインターを保持するもの

何か案は?

アップデート

_clickedは次のように定義されます。

_clicked: (e) ->
  # some code
4

1 に答える 1

2

Coffeescriptで特別なことは何もありません。ただやる

$link.click @_clicked

そして、次のように定義_clickedします

_clicked: (e) =>
  # some code

this._clickedのクリックイベントのハンドラーとして渡されますlink

このようなコールバックとして任意の関数を渡すことができます。重要な点は、関数を実行しないことです(に()はありません@_clicked)。JSの関数は正規変数であり、パラメーターとして他の関数に渡すことができます。

$link.click ->

.click関数を変数に格納せずに直接に渡すだけです。

太い矢印で定義するthisか、特定の値にバインドされている関数を返すJavaScript関数を使用します。@_clickedbindthis

CoffeeScriptはJavaScriptに機能を追加していません。bindFat矢印は、リンクからの関数と同様のバインドを実行するか(クラスのメソッド定義で使用されている場合) var _this = this、関数が関数内で定義されている場合にトリックを実行します。

于 2013-03-26T12:46:57.433 に答える