2013-07-12 2 views
0

У меня есть класс CoffeeScipt, определенный как такойCoffeeScript методы экземпляра

class Foo 
    a: 1 
    b: 2 
    main: -> 
    if a == 1 
    log(1) 

    log: (num) -> 
    console.log(num) 
f = new Foo 
f.main() 

он держит erroring, говоря, что журнал не определен. Я пробовал сделать это @log: тоже не работал. Я попытался сделать -> основного => и не работал. Как я могу вызвать методы экземпляра из самого класса?

ответ

8

Использование @ при вызове методов экземпляра и поля не при определении:

class Foo 
    a: 1 
    b: 2 

    main: -> 
    if @a == 1 
    @log(1) 

    log: (num) -> 
    console.log(num) 

f = new Foo() 
f.main() 

методы Определяющие с @ как этот

@log: (num) -> 
    console.log(num) 

делает их статическими.
Посмотрите на скомпилированный JS при разработке на CoffeeScript.

+0

Этот плюс используется ключевое слово 'new', и вы должны быть установлены. 'f = new Foo()' –

+0

И переписывание 'if a == 1' в' if Foo :: a == 1', так как 'a' также находится в прототипе. – ssarabando

+0

Извините, я опустил ключевое слово 'new', которое находится в исходном источнике. Кажется, это сработало. Благодарю. – rdodev

Смежные вопросы