JavaScript Multiple Inheritance
by david_i_smith
JavaScript
function FormFactory (options) { this.options = options; }
function AssessmentFormFactory (options) { FormFactory.call(this, options); }
function ReportFormFactory (options) { FormFactory.call(this, options); }
function DemographicsFormFactory (options) { AssessmentFormFactory.call(this, options); }
function UneditableFormFactory (options) { AssessmentFormFactory.call(this, options); }
AssessmentFormFactory.prototype = Object.create(FormFactory.prototype);
AssessmentFormFactory.prototype.constructor = AssessmentFormFactory;
ReportFormFactory.prototype = Object.create(FormFactory.prototype);
ReportFormFactory.prototype.constructor = ReportFormFactory;
DemographicsFormFactory.prototype = Object.create(AssessmentFormFactory.prototype);
DemographicsFormFactory.prototype.constructor = DemographicsFormFactory;
UneditableFormFactory.prototype = Object.create(FormFactory.prototype);
UneditableFormFactory.prototype.constructor = UneditableFormFactory;
FormFactory.prototype.sayHello = function () {
alert(this.options.name);
};
AssessmentFormFactory.prototype.loadData = function () {
alert('I want report types and report params');
};
ReportFormFactory.prototype.loadData = function () {
alert('I want report params');
};
DemographicsFormFactory.prototype.loadData = function () {
alert('I want report types, report params and demographics');
};
UneditableFormFactory.prototype.loadData = function () {
alert('I want report types');
};
var assessmentFormFactory = new AssessmentFormFactory({name: 'Assessment'});
assessmentFormFactory.sayHello();
assessmentFormFactory.loadData();
var reportFormFactory = new ReportFormFactory({name: 'Report'});
reportFormFactory.sayHello();
reportFormFactory.loadData();
var demographicsFormFactory = new DemographicsFormFactory({name: 'Demographics'});
demographicsFormFactory.sayHello();
demographicsFormFactory.loadData();
var uneditableFormFactory = new UneditableFormFactory({name:...