我试图了解它是如何工作的
为什么函数在原型中具有相同的名称以及如果函数(例如 Model.fromForm 优先于原型之一)如何使用它们。我的意思是声明是在基类/对象中进行的。当您从该基类/对象创建模型时究竟发生了什么?
我还有另一个问题,但我会先等这个。
谢谢,理查德
我试图了解它是如何工作的
为什么函数在原型中具有相同的名称以及如果函数(例如 Model.fromForm 优先于原型之一)如何使用它们。我的意思是声明是在基类/对象中进行的。当您从该基类/对象创建模型时究竟发生了什么?
我还有另一个问题,但我会先等这个。
谢谢,理查德
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...)