2014-09-26 4 views
4

Я очень новичок в coffeescript. Так что же означает эта ошибка?Ошибка Coffeescript: недействительный ключ объекта

это класс

class Animation 
    constructor: (t) -> 
     @startTime: t 

Я пытаюсь настроить его так, что этот класс имеет элемент инициализируется начальный промежуток т во время строительства. Я делаю это неправильно?

ответ

7

Ваш код создает объект в конструкторе (и не сохраняет ссылку в любом месте) с ключом @startTime. Ошибка возникает из-за того, что @ не является допустимым символом для ключа объекта.

Попробуйте вместо этого:

class Animation 
    constructor: (@startTime) -> 

Вот сгенерированный JavaScript:

var Animation; 

Animation = (function() { 
    function Animation(startTime) { 
    this.startTime = startTime; 
    } 

    return Animation; 

})(); 

Здесь вы можете увидеть синтаксис для того, что вы хотите сделать: http://coffeescript.org/#classes

Вот синтаксис, который вы неправильно и непреднамеренно использовали: http://coffeescript.org/#literals (раздел «Объекты и массивы»)

+0

Я думал, что символ @ создал элемент, а только инициализация ключа сделала локальную переменную этой функции. Как я могу сделать локальную переменную во время конструктора? – FatalCatharsis

+2

@FatalCatharsis: '@startTime = t' создаст элемент, вещи формы' k: v' являются просто '{k: v}' в маскировке, поэтому '@startTime: t' является попыткой написать' {@ startTime: t} ', который является синтаксической ошибкой. –

+0

ах, интересно. Это намного больше смысла, спасибо! – FatalCatharsis

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