在 CoffeeScript 中,当尝试在 class 中调用方法 (@_methodName) 时,它 returns 未定义
In CoffeeScript when trying to call a method (@_methodName) in a class it returns undefined
我正在尝试在我的代码中使用 underscore's debounce 函数,我将 class 的方法作为第一个参数传递,但是 _.debounce
告诉我我正在传递一个 undefined
函数应该在的地方的参数。
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
的静态 属性,即 它不在原型上 因为在您的声明中 @
指的是 class 本身,而不是它的实例。
或者您可以在构造函数中声明您的点击函数:
constructor: ->
@click = _.debounce @_save, 600
这将确保每个实例都有一个去抖函数,而不是共享函数。
我想,你应该尝试这样的事情:
class SomeClass
constructor: ->
@click = _.debounce @_save, 600
_save: =>
# ...
我正在尝试在我的代码中使用 underscore's debounce 函数,我将 class 的方法作为第一个参数传递,但是 _.debounce
告诉我我正在传递一个 undefined
函数应该在的地方的参数。
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
的静态 属性,即 它不在原型上 因为在您的声明中 @
指的是 class 本身,而不是它的实例。
或者您可以在构造函数中声明您的点击函数:
constructor: ->
@click = _.debounce @_save, 600
这将确保每个实例都有一个去抖函数,而不是共享函数。
我想,你应该尝试这样的事情:
class SomeClass
constructor: ->
@click = _.debounce @_save, 600
_save: =>
# ...