【发布时间】:2015-08-24 06:56:27
【问题描述】:
我正在尝试确定如何可能继承 Backbone 对象的“类”属性。类属性在这里解释: https://taurenmills.wordpress.com/2011/10/08/backbone-js-with-class-properties/
我们可以使用 Backbone 进行继承,如下所示:
var BaseModel = Backbone.Model.extend({
someFunc1: function(){
},
someFunc2: function(){
}
},
{ //class properties below
newInstance: function(attrs,opts_{
var model = new BaseModel(attrs);
model.randomProp = opts.randomProp;
return model;
}
});
var SubModel = BaseModel.extend({
someFunc2: function(){ //overrides someFunc2 in BaseModel
someFunc1(); calls someFunc1 in BaseModel
}
},
{ //class properties below
newInstance: function(attrs,opts){
var model = new SubModel (attrs);
model.randomProp = opts.randomProp;
return model;
}
}
);
我的问题是:我们如何从 BaseModel 继承“类”函数?
我想让 BaseModel 的子类继承类函数newInstance。
但我认为这是不可能的。来自Java,如何继承静态方法并不简单,静态方法在继承的静态方法中引用子类本身,而不是超类。
忽略我刚才说的话,换句话说,我想做这样的事情:
newInstance: function(attrs,opts){
var Constr = this.constructor; //*but* the 'this' keyword will not be available in the newInstance function, which is like a static method in Java
var model = new Constr(attrs);
model.randomProp = opts.randomProp;
return model;
}
我想要实现类函数的原因是,每次调用该函数时,我都可以在新模型实例上设置特定属性。
【问题讨论】:
标签: javascript inheritance backbone.js