【发布时间】:2015-07-27 03:27:16
【问题描述】:
当我将带有粗箭头的匿名函数作为 socket.io 回调传递,然后在同一对象中调用另一个方法(如下)时,@ 的范围是正确的:
module.exports = class InviteCreateSocket extends AbstractSocket
register: () ->
@socket.on 'invite:create', (data, callback) => @create data, callback
create: (data = {}, callback = @_noop) ->
# This returns an instantiated InviteCreateSocket. Bonzer!
console.log @
但是,如果我直接传入,现在作用域是socket的,就好像我用细箭头运行了之前的代码:
module.exports = class InviteCreateSocket extends AbstractSocket
register: () ->
@socket.on 'invite:create', @create
create: (data = {}, callback = @_noop) ->
# This returns the socket. Not bonzer. Not bonzer at all.
console.log @
那么,有没有一种很好的干净的方法来获取对象范围,而不必通过胖匿名函数中继它们?第一种方法可行,但看起来有点笨拙,显然需要同步参数在所有方法中。提前致谢!
【问题讨论】: