1

私はそれがどのように機能するかを理解しようとしています

プロトタイプで関数が同じ名前になるのはなぜですか。また、Model.fromFormなどの関数がプロトタイプの関数よりも優先される場合、それらはどのように使用されますか。つまり、宣言は基本クラス/オブジェクトで行われます。その基本クラス/オブジェクトからモデルを作成すると、正確には何が起こりますか?

また、別の質問がありますが、最初にこれを待ちます。

ありがとう、リチャード

4

1 に答える 1

2

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...)
于 2013-03-26T17:32:37.817 に答える