JavaScript 3 Level Inheritance

by Slava Fomin II

JavaScript

function Foo() {
    console.log('Foo()');
}
Foo.prototype.constructor = Foo;

console.log('-----');
console.log('Creating Foo');
new Foo();
console.log('-----');

// -----

function Bar() {
    console.log('Bar()');
    Foo.prototype.constructor.apply(this, arguments);
}
Bar.prototype = new Foo();
Bar.prototype.constructor = Bar;

console.log('-----');
console.log('Creating Bar');
new Bar();
console.log('-----');

// -----

function Baz() {
    console.log('Baz()');
    Bar.prototype.constructor.apply(this, arguments);
}
Baz.prototype = new Bar();
Baz.prototype.constructor = Baz;

console.log('-----');
console.log('Creating Baz');
new Baz();
console.log('-----');