Object.prototype.inheritsFrom = function(Super) {
function newPrototype(prototype) {
function Prototype() {
}
Prototype.prototype = prototype;
return new Prototype();
}
this.prototype = newPrototype(Super.prototype);
this.prototype.constructor = this;
};
/* THIS IS FUBAR!
Object.prototype.superConstructor = function() {
this.__proto__.__proto__.constructor.apply(this, arguments);
};
*/
Example: Foo ← Bar
function Foo(bar) { this.foo = function() { return bar; }; }
Foo.prototype.bar = function() { return this.foo(); };
Foo.BAR = function() { return "FOOBAR"; };
function Bar() { Foo.call(this, "BAR"); }
Bar.inheritsFrom(Foo);
function fooBar() {
console.log("Foo.BAR(): " + Foo.BAR());
var foo = new Foo("FOO");
console.log(foo);
console.log("foo.bar(): " + foo.bar());
var bar = new Bar();
console.log(bar);
console.log("bar.bar(): " + bar.bar());
}
See Also