2
class MyClass
myfun: (arg) ->
for x in arg
do ->
...
範圍的循環之外是MyClass的,而循環內(它是一個匿名函數)的範圍變爲存在domWindow。
爲什麼會出現這種情況?我怎樣才能防止它?我的主要問題是如果範圍更改,我無法訪問MyClass類中的其他函數。
感謝
class MyClass
myfun: (arg) ->
for x in arg
do ->
...
範圍的循環之外是MyClass的,而循環內(它是一個匿名函數)的範圍變爲存在domWindow。
爲什麼會出現這種情況?我怎樣才能防止它?我的主要問題是如果範圍更改,我無法訪問MyClass類中的其他函數。
感謝
使用fat arrow語法的功能綁定到當前環境:
class MyClass
myfun: (arg) ->
for x in arg
do =>
...
這是因爲do
關鍵字只是調用沒有任何背景的功能,所以它默認爲window
目的。
do -> ...
是相當於
(function() {
...
}());
很好的回答。有關'this' /'@'如何在JavaScript/CoffeeScript中工作的更多信息,請參閱[JavaScript Garden](http://javascriptgarden.info/#function.this)或(plug)[我的CoffeeScript書](http: //pragprog.com/book/tbcoffee/coffeescript)。 –