将所有回调函数包装在CoffeeScript中的匿名函数中的替代方法

丹尼斯·德雷舍

我今天开始使用CoffeeScript,并(args...) => @style(args...)在需要回调函数时发现自己使用了很多模式上下文大致如下所示:

class Parent
  @style: (feature) ->
    if feature
      @insight()

class Child extends Parent
  @insight: ->
    alert 'Sara is awesome'

  @load: ->
    [42].forEach((args...) => @style(args...))

Child.load()

这显示Sara is awesome,这是准确的。如果我只使用过[42].forEach(@style)style那么最终会this引用父类(我认为呢?),而后者并不知道insight

但这非常冗长,我的代码中需要很多回调函数。有没有更优雅,惯用的方式来解决此问题?

forEach在CoffeeScript中使用这种样式是很糟糕的,但是在我的实际代码中,我正在使用各种Leaflet函数,这些函数不能仅仅用for循环来代替。)

恩伯穆德斯

首先要注意的是,您不应insightParent课堂上打电话类的全部目的是提供封装。所以,我做的第一件事是将insightParent

要回答您的问题,更惯用的解决方法是使用粗箭头符号。粗箭头内部执行的操作是创建一个匿名函数来封装this

也就是说,最终代码应如下所示:

class Parent
  @style: (feature) =>
    if feature
      @insight()

  @insight: ->
    alert 'Sara is awesome'

class Child extends Parent
  @load: ->
    [42].forEach(@style)

Child.load()

希望能有所帮助。

编辑

根据OP注释:

class Parent
  style: (feature) =>
    if feature
      @insight()

class Child extends Parent
  load: ->
    [42].forEach(@style)

  insight: ->
    alert 'Sara is awesome'

(new Child()).load()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将返回的json数据包装在回调函数中并在HTML页面中查看?

来自分类Dev

将大部分代码包装在回调函数中是 JS 中的常见做法吗?

来自分类Dev

如何将参数传递给JS函数而不将其包装在匿名函数中?

来自分类Dev

为什么$ timeout要求将带有参数的函数包装在匿名函数中?

来自分类Dev

将代码包装在函数中

来自分类Dev

JavaScript中匿名函数的替代方法

来自分类Dev

Javascript将链接的函数包装在单个函数中

来自分类Dev

告诉 forEach 等待,并且主要避免将所有内容包装在异步函数中以使用等待?

来自分类Dev

了解匿名函数中的参数(回调示例)

来自分类Dev

在回调匿名函数中访问类的实例

来自分类Dev

不增加匿名回调函数中的变量

来自分类Dev

在回调匿名函数中访问类的实例

来自分类Dev

了解匿名函数中的参数(回调示例)

来自分类Dev

javascript-寻求令人满意的解释,为什么在回调中需要使用匿名函数包装器

来自分类Dev

将准备好的语句包装在函数中

来自分类Dev

将玩笑模拟包装在函数中以用于多个测试

来自分类Dev

如何将Ajax权限检查包装在函数中?

来自分类Dev

通过将参数包装在函数中来延迟评估?

来自分类Dev

将C ++函数包装在返回指针的c#中

来自分类Dev

与将所有东西包装在脚手架中相比,Flutter快餐栏替代品还是更简单的方法?

来自分类Dev

如何包装回调函数以在WinJS中获得承诺?

来自分类Dev

为什么必须用匿名函数包装回调?

来自分类Dev

将私有删除器函数包装在结构中的目的是什么?

来自分类Dev

是否有任何理由将Lambda包装在命名函数中?

来自分类Dev

自动将动态添加的对象属性(函数)包装在包装函数中

来自分类Dev

包装在UseEffect中的React异步函数

来自分类Dev

Meteor.publish回调需要包装在Fiber中

来自分类Dev

直接将函数与匿名函数传递给 then 承诺回调

来自分类Dev

在空手道中,将Java函数包装在JavaScript函数中的好处是什么?

Related 相关文章

  1. 1

    如何将返回的json数据包装在回调函数中并在HTML页面中查看?

  2. 2

    将大部分代码包装在回调函数中是 JS 中的常见做法吗?

  3. 3

    如何将参数传递给JS函数而不将其包装在匿名函数中?

  4. 4

    为什么$ timeout要求将带有参数的函数包装在匿名函数中?

  5. 5

    将代码包装在函数中

  6. 6

    JavaScript中匿名函数的替代方法

  7. 7

    Javascript将链接的函数包装在单个函数中

  8. 8

    告诉 forEach 等待,并且主要避免将所有内容包装在异步函数中以使用等待?

  9. 9

    了解匿名函数中的参数(回调示例)

  10. 10

    在回调匿名函数中访问类的实例

  11. 11

    不增加匿名回调函数中的变量

  12. 12

    在回调匿名函数中访问类的实例

  13. 13

    了解匿名函数中的参数(回调示例)

  14. 14

    javascript-寻求令人满意的解释,为什么在回调中需要使用匿名函数包装器

  15. 15

    将准备好的语句包装在函数中

  16. 16

    将玩笑模拟包装在函数中以用于多个测试

  17. 17

    如何将Ajax权限检查包装在函数中?

  18. 18

    通过将参数包装在函数中来延迟评估?

  19. 19

    将C ++函数包装在返回指针的c#中

  20. 20

    与将所有东西包装在脚手架中相比,Flutter快餐栏替代品还是更简单的方法?

  21. 21

    如何包装回调函数以在WinJS中获得承诺?

  22. 22

    为什么必须用匿名函数包装回调?

  23. 23

    将私有删除器函数包装在结构中的目的是什么?

  24. 24

    是否有任何理由将Lambda包装在命名函数中?

  25. 25

    自动将动态添加的对象属性(函数)包装在包装函数中

  26. 26

    包装在UseEffect中的React异步函数

  27. 27

    Meteor.publish回调需要包装在Fiber中

  28. 28

    直接将函数与匿名函数传递给 then 承诺回调

  29. 29

    在空手道中,将Java函数包装在JavaScript函数中的好处是什么?

热门标签

归档