CoffeeScript новичок здесь. У меня возникла странная проблема с объемом функции, которую я нажал на массив, а затем выполнил внутри функции-члена класса. В принципе, похоже, что this
не устанавливается правильно.Проблемы с цветом CoffeeScript с набором функций
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 идиоматическим.
Хорошо, просто хотел убедиться, что не было более элегантного способа сделать это. Думаю, я пойду со своим вторым решением. Благодаря! –