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

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

当我可以要求时,我会得到这个

未捕获的类型错误:无法调用未定义的方法“应用”(匿名函数)

如果我像这样在 debouncedAjax 属性上设置该 debounce 函数的结果

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

它工作正常!

为什么 ?

顺便说一句:去抖动是来自令人惊叹的 underscore.js 框架的功能!

4

1 回答 1

3

与 Javascript 中的许多东西一样,它归结为this指针的含义。

在第一个实例中,您可能正在定义一个类原型。如果不明确,则在 Backbone.something.extend() 调用中,这是同一件事。此时,您正在将一个函数与_.bind(myFunction, this). 那么此时this指针指的是什么?它肯定不是对象的任何特定实例,因为它们还没有被创建。它可能是windowBackbone 框架中的一个或某个东西。

当您在函数中调用该函数时initializethis指针表示您想要的,所以一切都按照您的意愿进行。

于 2012-05-10T02:06:17.383 回答