如果您确实想重写构造函数,请传递constructor
财产给Backbone.Model.extend()
, e.g.:
var Klass = Backbone.Model.extend( {
constructor : function ( attributes, options ) {
// ...
}
} );
如果您想从自定义构造函数调用内置构造函数,您可以执行以下操作:
var Klass = Backbone.Model.extend( {
constructor : function ( attributes, options ) {
Backbone.Model.apply( this, arguments );
}
} );
或者,如果您不想在整个子类中重复包含父类的变量的名称,或者您不想担心该变量的值发生变化,您可以执行如下操作:
var Klass;
var parent_klass = Backbone.Model.prototype;
( function ( parent_klass ) {
Klass = parent_klass.constructor.extend( {
constructor : function ( attributes, options ) {
parent_klass.constructor.apply( this, arguments );
}
} );
} )( parent_klass );
或者如果您更喜欢这种方式@克劳德建议 https://stackoverflow.com/questions/10399334/backbone-js-custom-constructor/10413335#12347014,但是在子类中重复子类变量名而不是父类变量名:
var Klass = Backbone.Model.extend(
{
constructor : function ( attributes, options ) {
Klass.parent_klass.constructor.apply( this, arguments );
}
},
{
parent_klass : Backbone.Model.prototype
}
);
如果您想要更多建议,则必须更具体地说明您想要完成的任务。
在内置构造函数功能之后您只想做的任何事情,您可能应该在initialize()
.