3

このコードを検討してください

 _bindEvents: ->
  @input.bind 'keyup', =>
    @filter($(this).val())
    if $this .val() is ''
      @clearBtn.hide()
    else
      @clearBtn.show()

「@」が「_this」を表していることは明らかです。したがって、親スコープを参照しますが、「内側の this」が必要な場合はどうでしょうか。

この行のように:

@filter($(this).val())

これにコンパイルされます:

_this.filter($(_this).val()); // $(_this)

そして私はこれが必要です:

_this.filter($(this).val());  // $(this)

細い矢印を使用せずに、クローズを使用して手動で this 参照を保存する方法はありますか (それ = これ)?

4

2 に答える 2

3

私の知る限り、それを行う方法はありません。いくつかの理由から、それに対して警告します。

  • 理解の容易さ:ハッシュ ロケット ( =>) を使用すると、 の現在の値を保持する必要がある/保持したいということを読者に効果的に伝えることができますthis。秒を再導入すると、thisそれが混乱します。

  • future-compatibility:私の理解では、次の ECMAScript 仕様は=>、新しいthis. (そして、CoffeeScript が新しい矢印構文を直接採用したとしても驚かないでしょう)

明示的な参照を伴う細い矢印は、おそらく最終的に物事をより明確にするでしょう。

于 2012-05-09T21:44:52.300 に答える
0

埋め込みの JavaScript を使用して、いつでもこれをハッキングできます。

`var second_this = this;`
@filter($(second_this).val())
于 2013-04-12T19:35:10.290 に答える