Class extending with Class.Extend()
by Chad Drummond
JavaScript
Function.prototype.Extend = function Extend(C, proto) {
var P = (Function !== this) ? this : function Class(){};
var F = function (){};
C = C || function Fn() {};
F.prototype = P.prototype;
C.prototype = new F();
for (var v in proto) {
if (proto.hasOwnProperty(v)) {
C.prototype[v] = proto[v];
}
}
C.prototype.Constructor = C;
C.prototype.Parent = P;
return C;
};
var Class = Function.Extend(function Cl() {
},{
getType: function() {
return this.Constructor.name;
}
});
var Animal = Class.Extend(function Animal(){
}, {
alive: true,
planet: 'Earth',
location: function() {
return this.planet;
}
});
var Mammal = Animal.Extend(function Mammal() {
}, {
type: Animal.name
});
var Cat = Mammal.Extend(function Cat() {
this.sound = function() {
console.log('Meoww');
};
}, {
planet: 'Congo'
});
var kitty = new Cat();
console.log(kitty);