2012-03-19 3 views

答えて

12

ソースコードを見ると、get関数はthis.attributes[name]を呼び出すだけです。

http://backbonejs.org/docs/backbone.html#section-31

利点は、しかし、少なくとも2倍である:

1)あなたは

2を書いているコードの量を減らし、一貫したAPI)をオーバーライドする機能getメソッドより複雑なアクセス制御を提供します

たとえば、ネストされたモデル機能を提供するためにモデルがどのように機能するかを上書きするいくつかのバックボーンプラグインがあります。

model.get("submodel.attr")

、それはsubmodelサブモデルのattrを解析持っている:彼らはあなたがこのようなgetメソッドを書くことができるようにするために、それは非常に簡単です。 getメソッドを使用しないと、これをAPIと一貫性を持たせることは難しくなります。

しかし、これの基本的な利点はカプセル化です。 JavaScriptがgetterとsetterのコードを書くための真のget/setプロパティを提供するまでは、Backboneのgetsetのような回避策が残っています。

+1

の代わりにmodel.attributes[attribute]を使用する習慣があれば、これを忘れる可能性が非常に高いです。user.get( 'name') 'vs' user.name'がコード量を減らす方法を明確にしてください。 –

+0

彼はあなたがもっと長い 'user.attributes ['name']'の代わりに 'user.get( 'name')'を使うことを意味すると思います。しかし、ネストされたモデルにアクセスするには、次の構文を使用します: 'user.attributes.name.first' – orad

2

はじめに、model.attributeは絶対に正しくありません。 changeイベントを発生させるには、model.set()が必要です。 model.get(attribute)

関連する問題

 関連する問題