我正在尝试主干并使用模型概念——我过去在没有框架的情况下实现了这一点。我也在尝试打开 javascript linter 的 sublime text,并注意到它非常讨厌“新”。
var StandardMethod = Backbone.Model.extend({
initialize : function(){
console.log('init');
}
});
var LintOk = Backbone.Model.extend((function(){
this.initialize = function(){
console.log('init');
};
return this;
})());
var LintHates = Backbone.Model.extend(new function(){
this.initialize = function(){
console.log('init');
};
});
var sm = new StandardMethod();
var lo = new LintOk();
var lh = new LintHates();
LintOk 方法需要在 3 个不同的地方进行更改才能创建与闭包兼容的函数。因此,如果我想要一些闭包变量,例如:
var NowWithClosures = Backbone.Model.extend(new function(){
var x = 1;
this.initialize = function(){
console.log('init');
};
this.AddOneToX = function(){
x++;
};
this.getX = function() {
return x;
};
});
var nwc = new NowWithClosures();
nwc.AddOneToX();
console.log(nwc.getX());
我必须使用这种非常冗长的方法才能获得 lint 批准?我在这里缺少什么吗?这是什么原因?我可以“退还这个;” 在我所有的模型定义中,但这看起来很愚蠢,而且不直观 - 模型定义可能不止一个屏幕长,并且“新”调用将位于顶部,使其更明显是一个匿名构造函数。