Backbone.jsとClosureCompilerを詳細モードで使用しようとしています。Backbone.Model
を使用してゲッター/セッターを作成する便利な関数を作成しBackbone.Model.defaults
ました。次のようになります。
some.defaultProperties = function(ctor) {
if (!ctor.prototype.defaults)
return;
var defattr = function(name) {
return {
get: function() {
return this.get(name);
},
set: function(val) {
var diff = {};
diff[name] = val;
return this.set(diff);
}
};
};
var props = {};
for (var attr in ctor.prototype.defaults) {
if (ctor.prototype.defaults.hasOwnProperty(attr))
props[attr] = defattr(attr);
}
Object.defineProperties(ctor.prototype, props);
};
ここでCoffeeScriptと同等http://srackham.wordpress.com/2011/10/16/getters-and-setters-for-backbone-model-attributes/
次に、詳細モードのClosureCompilerに戻ります。通常のプロパティアクセス構文を使用してアクセスしているため、気に入らないようです。model.color
の代わりにmodel.get('color')
、それがポイントです。しかし、クロージャーはそれらを巧みに操っているので、私undefined
は自分の価値の代わりに得ます。これに対する回避策はありますか?(使用するすべてを書き直すことを除いてget('attrname')
)?
UPDATEBackbone.Model.hasChanged
そしてもちろん、これは属性名に文字列リテラルを使用する他のメソッドでどのように機能しますか。