我正在尝试在我的代码中使用underscore’s debounce函数,并且我将我的类的方法作为第一个参数传递,但_.debounce告诉我,我正在传递函数应该是的未定义参数.
class SomeClass
click: _.debounce @_save, 600
_save: =>
# Save logic
另一方面,如果我这样做,它可行,但这个解决方案似乎有点难看.
class SomeClass
click: _.debounce ( ->
@_save()
), 600
_save: =>
# Save logic
当我检查生成的两个函数的JS源代码时,似乎两者都应该正常工作,不知道我是否遗漏了CoffeeScript中的内容.
解决方法:
CoffeeScript编译:
click: _.debounce @_save, 600
成:
SomeClass.prototype.click = _.debounce(SomeClass._save, 600);
注意_save方法是SomeClass的静态属性,即它不在原型上,因为在你的声明中@引用了类本身,而不是它的实例.
或者,您可以在构造函数中声明您的单击函数:
constructor: ->
@click = _.debounce @_save, 600
这将确保每个实例都有一个去抖动功能,而不是共享功能.