2013-03-26 3 views
1

Я пытаюсь понять, как это работаетпочему spine.Model имеет функции с тем же именем в прототипе

Почему функции имеют такое же имя в прототипе и как они используются, если функция для Пример Model.fromForm имеет приоритет над прототипом. Я имею в виду, что объявления производятся в базовом классе/объекте. Что именно происходит при создании модели из этого базового класса/объекта?

Также у меня есть другой вопрос, но я буду ждать этого первого.

спасибо, Ричард

ответ

2

Позвоночник модель объект и «экземпляры» моделей являются различными объектами, поэтому различные функции вычисляются. Здесь нет приоритета или перегрузки. Например (в CoffeeScript) следующее делает то же самое:

YourModel instance = YourModel.fromForm(form) # Uses the model object fromForm 

и

YourModel instance = new YourModel 
instance.fromForm(form) # Uses the prototype fromForm 

Если вас look at the source code, вы можете понять, почему это эквивалентно; объект fromForm просто объявлен как this.fromForm, и это вызывает прототип одно:

@fromForm: -> 
    (new this).fromForm(arguments...) 
+0

спасибо, что helpfull..could вы, возможно, смотрите на примере кода сильно упрощенном из позвоночника model..maybe вы можете определить, где он идет не так. Я теперь работаю с firebug, пытаясь выяснить, когда это «что»? .. очень запутанно – Richard

+0

Вы должны просто разместить свой второй вопрос в качестве нового вопроса с кодом! Кто-то сможет помочь. –

+0

да, я могу сделать это, слишком плохо, потому что это родственный ... но я буду, потому что это меня задевает .. спасибо – Richard