luc*_*uca 2 javascript coffeescript
在这段代码中:
class MyClass
myfun: (arg) ->
for x in arg
do ->
...
Run Code Online (Sandbox Code Playgroud)
循环外部的范围是MyClass,而在循环内部(它是一个匿名函数),范围变为DOMWindow.
为什么会这样?我该怎样预防呢?我的主要问题是,如果范围发生变化,我无法访问MyClass类中的其他函数.
谢谢
使用胖箭头语法将函数绑定到当前上下文:
class MyClass
myfun: (arg) ->
for x in arg
do =>
...
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为do
关键字只调用没有任何上下文的函数,所以它默认为window
对象.
do -> ...
Run Code Online (Sandbox Code Playgroud)
相当于
(function() {
...
}());
Run Code Online (Sandbox Code Playgroud)