CoffeeScript 新手在这里。我对已推送到数组然后在类的成员函数中执行的函数的范围有一个奇怪的问题。基本上,似乎this
没有正确设置。
class TestClass
constructor: ->
@functions = [] # my array of functions
@member = "hello there! come find me!"
update: =>
func() for func in @functions
testClass = new TestClass
testClass.functions.push( ->
str = "could i find @member? " + @member? + "; this's keys: " + Object.keys(this)
console.log(str)
)
testClass.update()
结果?奇怪的是,它是:
could i find @member? false; this's keys:
top,location,window,external,chrome,v8Locale,document,$,jQuery,CoffeeScript
似乎调用函数的上下文是错误的。我认为通过将瘦箭头函数推到我的数组上,当调用该函数时,它将采用调用它的上下文 ( update
,在哪里this
)testClass
如果我这样做,一切都会正常工作:
update: =>
func.call(this) for func in @functions
但这似乎不是很符合 CoffeeScript 的习惯。