it's about class extension (but javascript doesn't have a real "class"). Can you use Prototype.js or mootool.js or do this?
function Human ( ) { this.init.apply ( this, arguments ); } Human.prototype ={ init: function ( ) { var optns = arguments[0] || {}; this.age = optns.age || 0; this.name = optns.name || "nameless"; }, getName : function ( ) { return this.name; }, getAge : function ( ) { return this.age; } } function Man ( ) { this.init.apply ( this, arguments ); } Man.prototype = { init : function ( ) { Human.prototype.init.apply (this, arguments); this.sex = "man"; }, getName : Human.prototype.getName, getAge : Human.prototype.getAge, getSex : function ( ) { return this.sex; } } function Woman ( ) { this.init.apply ( this, arguments ); } Woman.prototype = { init : function ( ) { Human.prototype.init.apply (this, arguments); this.sex = "woman"; }, getName : Human.prototype.getName, getAge : Human.prototype.getAge, getSex : Man.prototype.getSex } var human = new Human({age:60,name:"Tom Tomas"}), man1 = new Man({age:30,name:"Wood Tomas"}), woman1 = new Woman({age:19,name:"Mary Tomas"}); console.log( human.getName() ); console.log( man1.getName() ); console.log( woman1.getName() ); console.log( human.getAge() ); console.log( man1.getAge() ); console.log( woman1.getAge() ); console.log( human.getSex && human.getSex() ); console.log( man1.getSex() ); console.log( woman1.getSex() );
or you can use jQuery $ .extend for this. desire can help!
source share