Javascript coffee脚本构造函数中的绑定事件
如果我有课Javascript coffee脚本构造函数中的绑定事件,javascript,coffeescript,Javascript,Coffeescript,如果我有课 class Control constructor: (@canvas, @control) -> @control.on('keyup change', -> update(@canvas) ) 当我更改控件时,会触发更改事件,并出现错误$canvas未定义 但是,如果代码更改为 class Control constructor: (canvas, @control) -> @control.on('keyup ch
class Control
constructor: (@canvas, @control) ->
@control.on('keyup change', ->
update(@canvas)
)
当我更改控件时,会触发更改事件,并出现错误$canvas未定义
但是,如果代码更改为
class Control
constructor: (canvas, @control) ->
@control.on('keyup change', ->
update(canvas)
)
一切正常
这是为什么呢?这是意料之中的事。在构造函数参数上使用
@
会自动在构造函数中设置this.canvas=canvas
。事件处理程序的上下文(this
)与类不同,除非您使用“胖箭头”=>
明确限定它的范围
class Control
constructor: (@canvas, @control) ->
@control.on('keyup change', => # notice fat arrow
update(@canvas)
)
在您的工作示例中,您通过不将canvas
附加到当前上下文来避免问题