1
    ,debouncedAjax: _.debounce(_.bind(myFunction, this), 2000)

,request: function(requestParams, response){
    this.debouncedAjax(requestParams, response);
}

私が要求できるとき、私はこれを手に入れます

Uncaught TypeError: undefined (無名関数) のメソッド 'apply' を呼び出せません

このようにdebouncedAjaxプロパティにそのデバウンス関数の結果を設定すると

    ,initialize: function() {               
      this.debouncedAjax = _.debounce(this.imoveisAjaxRequest, 2000);           
    }

それは正常に動作します!

なぜ ?

ところで: debounce は AMAZING underscore.js フレームワークの関数です!

4

1 に答える 1

3

Javascript の非常に多くのことと同様に、thisポインターが何を意味するかということになります。

最初の例では、おそらくクラス プロトタイプを定義しています。明示的でない場合は、同じことである Backbone.something.extend() 呼び出し内。その時点で、関数を_.bind(myFunction, this). thisでは、その時点でポインタは何を参照しているのでしょうか? まだ作成されていないため、オブジェクトの特定のインスタンスではありません。それはおそらくwindow、バックボーン フレームワークのいずれかまたは何かです。

関数内でその関数を呼び出すとinitializethisポインターは目的を意味するため、すべてが思いどおりに機能します。

于 2012-05-10T02:06:17.383 に答える