class Test
foo: -> alert 'foo'
foo2: -> this['foo']
Когда вы звоните x.foo2()
он не делает то, что вы думаете, он делает.
-> this['foo']
Эта функция возвращает значение this['foo']
, которое является функциональным объектом. Таким образом, возвращаемое значение является функциональным объектом. Функция не запускается.
Попробуйте это:
class Test
foo: -> alert 'foo'
foo2: -> this['foo']()
Теперь при вызове foo2()
он получает объект funciton и выполняет его .
Кроме того, при использовании динамической строки в качестве средства доступа вам нужно использовать только скобочные обозначения. Это одно и то же:
class Test
foo: -> alert 'foo'
foo2: -> @foo()