当我写咖啡脚本时,我倾向于这样做(伪代码):
$link.click (e) =>
this._clicked(e)
真的没有办法在 CoffeeScript 中进行透明绑定吗?我希望能够做到:
$link.click =this._clicked
或其他东西,它将我的 this._clicked 方法直接绑定到事件,并保留它的 this 指针
有任何想法吗?
更新
_clicked 将被定义为:
_clicked: (e) ->
# some code
当我写咖啡脚本时,我倾向于这样做(伪代码):
$link.click (e) =>
this._clicked(e)
真的没有办法在 CoffeeScript 中进行透明绑定吗?我希望能够做到:
$link.click =this._clicked
或其他东西,它将我的 this._clicked 方法直接绑定到事件,并保留它的 this 指针
有任何想法吗?
更新
_clicked 将被定义为:
_clicked: (e) ->
# some code
咖啡脚本没什么特别的。做就是了
$link.click @_clicked
然后定义_clicked
为
_clicked: (e) =>
# some code
它将this._clicked
作为 的 click 事件的处理程序传递link
。
您可以像这样将任何函数作为回调传递。关键是不执行函数(没有()在@_clicked
)。JS 中的函数是一个普通变量,可以作为参数传递给其他函数。
和
$link.click ->
您只是将函数.click
直接传递给而不将其存储到变量中。
为了保持this
你要么用一个胖箭头定义@_clicked
,要么你使用JavaScriptsbind
函数,它返回一个this
绑定到某个值的函数。
CoffeeScript 没有向 JavaScript 添加任何额外的功能。Fat 箭头只是执行类似于bind
链接中的函数的绑定(如果它用于类的方法定义),或者只是在var _this = this
函数内部定义函数时执行技巧。