胖箭头重复

Fat arrow repetition?

本文关键字:      更新时间:2023-09-26

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

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

是否真的没有办法在CoffeeScript中透明地绑定?我希望我能做到:

$link.click =this._clicked

之类的,可以绑定this。_clicked方法,直接指向事件,保持它的this指针

任何想法?

_clicked定义为:

_clicked: (e) ->
  # some code

coffeescript没什么特别的。只做

$link.click @_clicked

然后定义_clicked

_clicked: (e) =>
  # some code

它将传递this._clicked作为link的click事件的处理程序。

你可以像这样传递任何函数作为回调函数。关键是不要执行函数(在@_clicked中没有())。JS中的函数是一个普通的变量,可以作为参数传递给其他函数。

$link.click ->

你只是将一个函数直接传递给.click,而不是将其存储到一个变量中。

为了保持this,你要么用一个胖箭头定义@_clicked,要么使用javascript的bind函数,它返回一个函数,其中this绑定到某个值。

CoffeeScript没有添加任何额外的功能到JavaScript。Fat箭头只执行与链接中的bind函数类似的绑定(如果它在类的方法定义中使用),或者只在函数内部定义函数时执行var _this = this技巧。

相关文章:
  • 没有找到相关文章