胖箭头重复
Fat arrow repetition?
当我写咖啡脚本时,我倾向于这样做很多次(伪代码):
$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
技巧。
相关文章:
- 没有找到相关文章