在此代码中:
class MyClass
myfun: (arg) ->
for x in arg
do ->
...
循环外部的作用域是 MyClass,而循环内部(它是一个匿名函数)作用域更改为 DOMWindow。
为什么会发生这种情况?我该如何预防?我的主要问题是,如果范围发生变化,我将无法访问 MyClass 类中的其他函数。
谢谢
最佳答案
使用fat arrow将 a 函数绑定(bind)到当前上下文的语法:
class MyClass
myfun: (arg) ->
for x in arg
do =>
...
发生这种情况是因为 do
关键字只是在没有任何上下文的情况下调用函数,因此它默认为 window
对象。
do -> ...
相当于
(function() {
...
}());
关于javascript - 全局命名空间和 CoffeeScript 循环中的 this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165012/