私はそれがどのように機能するかを理解しようとしています
プロトタイプで関数が同じ名前になるのはなぜですか。また、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...)