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