2013-07-27 6 views
2

У меня есть следующий код:Получение «публичные переменный» в «частном методе» с использованием CoffeeScript

class Example 

    @text = 'Hello world! ;)' 

    getText = -> 
    @text 

    constructor: -> 
    alert(getText()) 

### Instance ### 
example = new Example 

Это будет возвращать «неопределенный», Есть ли способ, чтобы сделать его вернуть @text содержания?

http://jsfiddle.net/vgS3y/

ответ

2

Это общая ошибка в CoffeeScript. Посмотрите на скомпилированный JavaScript:

Example = (function() { 
    var getText; 

    Example.text = 'Hello world! ;)'; 

    getText = function() { 
    return this.text; 
    }; 

    function Example() { 
    alert(getText()); 
    } 

    return Example; 

})(); 

Использование @ в определении класса создает статический метод или переменную. То есть он привязан к объекту класса.

Если вы пытаетесь сделать его переменной экземпляра, установите его в свой конструктор.

constructor: -> 
    @text = 'Hello world! ;)' 
    alert(getText()) 

Если вы пытаетесь получить доступ к статическому свойству, обратитесь к имени класса.

getText = -> 
    Example.text 

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

  • Нет связанных вопросов^_^