为什么spine.Model在原型中具有相同名称的函数

时间:2013-03-26 15:31:09

标签: javascript spine.js

我想了解它是如何运作的

为什么函数在原型中具有相同的名称,以及如何在函数中使用它们  例如,Model.fromForm优先于原型1。我的意思是声明是在基类/对象中进行的。从该基类/对象创建模型时究竟发生了什么?

我还有另外一个问题,但我会先等一下。

谢谢,理查德

1 个答案:

答案 0 :(得分:2)

Spine模型对象和模型的“实例”是不同的对象,因此评估不同的函数。这里没有优先权或超载。例如(在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...)