我正在寻找一种使用多重继承在javascript中创建对象的方法,这样就可以在原型上获得方法,并在实例上定义相关属性,所有这些都在同一个类中定义。这是我能用prototype.js获得的:
var MyBaseClass = Object.create({
initialize: function(){
this.id = ID_Generator.getNextID();
}
});
var HasElementsMixin = {
addElement: function(){...},
removeElement: function(){...}
}
var Page = Class.create(MyBaseClass, HasElementsMixin, {
initialize: function($super){
$super();
this.elements = [];
},
render: function(){...}
});
我希望在mixin中将elements数组与相应的方法一起声明,但不能在Page的实例之间共享。我尝试将HasElementsMixin编入另一个基类,但它不起作用。我想避免做MyBaseClass - > HasElements - >页面
是否可以使用prototype.js,或者我应该使用其他库或本机解决方案?
答案 0 :(得分:1)
你也可以给你的mixin一个“构造函数”。需要从实现mixin的每个类调用它,就像你需要在子类中调用$super
一样:
var HasElementsMixin = {
initializeElements: function() {
this.elements = [];
},
addElement: function(){…},
removeElement: function(){…}
};
var Page = Class.create(MyBaseClass, HasElementsMixin, {
initialize: function($super){
$super();
this.initializeElements();
},
render: function(){…}
});