0

当我写咖啡脚本时,我倾向于这样做(伪代码):

$link.click (e) =>
  this._clicked(e)

真的没有办法在 CoffeeScript 中进行透明绑定吗?我希望能够做到:

$link.click =this._clicked

或其他东西,它将我的 this._clicked 方法直接绑定到事件,并保留它的 this 指针

有任何想法吗?

更新

_clicked 将被定义为:

_clicked: (e) ->
  # some code
4

1 回答 1

2

咖啡脚本没什么特别的。做就是了

$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函数内部定义函数时执行技巧。

于 2013-03-26T12:46:57.433 回答