Почему 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...)