Backbone.Model を読んだ。ざっと眺めただけ。
http://documentcloud.github.com/backbone/docs/backbone.html
- initialize にデフォルトで何もしない関数を割り当てておくことで呼び出し時に isFunction とかでチェックしなくて済むワザ
- escape の内容は初回呼び出し時にキャッシュ
- set は呼び出し時に元の値をとっておいて値が同一でないもの(更新されるべき)だけ更新している。このチェックは変化した属性に対する change:xxx イベントの発火のために必要
- unset でもバリデーションが走るのは何故だろう。 void 0 は undefined というグローバル変数の値にかかわらず常に undefined を返すんだっけか。 validObj に undefined をセットしてバリデーションを実行、やっぱりよくわからない。 !== undefined 的なバリデーションルールを考慮してるんだろうか
- clear の for (attr in old) validObj[attr] = void 0; みたいに一行に詰め込むのを多用しているなーという印象がある、ブレース省略スタイルは個人的には採用したくないけどすっきり読めるとは思う
- url を collection やら何やらからとってくるあたり
- parse みたいな一段かます設計にしとくと汎用性が高まる
全体的に Ruby の ActiveRecord っぽいなーと思った。メソッド名とか。そしてその思いは Backbone.Collection を読んでさらに強まるのであった。