Backbone.js, Knockout.js, Ractive.jsどれも素晴しいライブラリですが、モデル等のデータの取得・設定する構文がとてもダサいのが難点ですよね。 Backbone.jsとRactive.jsはget("hoge")やset("hoge", value)という形式。 Knockout.jsは少しマシでhoge()で取得しhoge(value)で設定する形式。 こういうラッパーを必要とする理由はKnockout.jsのドキュメントにわかりやすく書いています。 JavaScript には getter/setter 構文がありますが、残念ながら全てのブラウザで実装されているわけではありません(IEゲフンゲフン...)。 そこで互換性を確保するため、ko.observable オブジェクトの実態は function です。 ドキュメント | Knockout.js