我正在尝试在高级模式下使用 Backbone.js 和 Closure Compiler。Backbone.Model
我编写了一个方便的函数,它为我的 s using创建 getter/setter 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/
现在回到高级模式下的 Closure Compiler。它似乎不喜欢它,因为我正在使用普通的属性访问语法访问那些,即。model.color
而不是model.get('color')
,这就是重点。但是 Closure 正在破坏这些,因此我得到undefined
的不是我的价值。有什么解决方法吗?(除了重写所有要使用的东西get('attrname')
)?
更新当然,这将如何Backbone.Model.hasChanged
与其他方法一起使用字符串文字作为属性名称。