Jo *_*o P 7 scope coffeescript arrow-functions
在coffeescript类的胖箭头函数中,如何访问类的范围以及函数?
例:
class Example
foo: ->
$('.element').each => # or ->
@bar($(this)) # I want to access 'bar' as well as the jquery element
bar: (element) ->
element.hide()
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,如果我使用a =>那么@引用类的这个,但是'this'然后是错误的,而如果我对每个使用 - >,那么'this'是正确的作用域但是但那我该如何引用类功能栏呢?
谢谢!
Ale*_*yne 16
虽然mak是对的,但他没有指出在咖啡脚本中你很少需要jQuery的each
方法,正如你所注意到的那样,在没有你的许可的情况下打击你的执行上下文.
class Example
foo: ->
for element in $('.element')
@bar $(element)
bar: (element) ->
element.hide()
Run Code Online (Sandbox Code Playgroud)
Coffee脚本的循环功能支持each
没有任何实际自定义库代码的概念.而且它们也不会产生新的范围或上下文,这意味着您不需要任何类型的胖箭.
mak*_*mak 10
这是因为在CoffeeScript中@
是一个别名,this
即当您将.coffee编译为.js时,@
将替换为.js this
.
如果Example::bar
是丑陋的,我不认为有更"漂亮"的解决方案.
您可以this
在调用之前存储引用.each
:
class Example
foo: ->
self = @
$('.element').each ->
self.bar($(this)) # or self.bar($(@))
bar: (element) ->
element.hide()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3993 次 |
最近记录: |