Почему spine.Model имеет функции с тем же именем в прототипе

Я пытаюсь понять как это работает

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

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

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

1 ответ

Решение

Объект модели Spine и "экземпляры" модели - это разные объекты, поэтому оцениваются разные функции. Здесь нет приоритета или перегрузки. Например (в coffeescript) следующее делает то же самое:

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

а также

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

Если вы посмотрите на исходный код, вы поймете, почему он эквивалентен; предмет fromForm просто объявлен как this.fromFormи он вызывает прототип один:

@fromForm: ->
  (new this).fromForm(arguments...)
Другие вопросы по тегам