【问题标题】:global namespace and this in coffeescript loops全局命名空间和咖啡脚本循环中的 this
【发布时间】:2011-11-02 03:52:49
【问题描述】:

在这段代码中:

class MyClass
  myfun: (arg) ->
    for x in arg
      do ->
        ...

循环外的作用域是 MyClass,而循环内(它是一个匿名函数)作用域会变为 DOMWindow。

为什么会这样?我该如何预防?我的主要问题是,如果范围发生变化,我将无法访问 MyClass 类中的其他函数。

谢谢

【问题讨论】:

    标签: javascript coffeescript


    【解决方案1】:

    使用fat arrow语法将a函数绑定到当前上下文:

    class MyClass
      myfun: (arg) ->
        for x in arg
          do =>
            ...
    

    这是因为 do 关键字只是在没有任何上下文的情况下调用函数,所以它默认为 window 对象。

    do -> ...
    

    相当于

    (function() {
        ...
    }());
    

    【讨论】:

    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2012-06-14
    • 1970-01-01
    • 2023-04-11
    • 2012-06-18
    相关资源
    最近更新 更多