Prototyped inheritance reminded

by podlipensky

JavaScript

function A(){
    console.log('ctor A');
    this.foo = function(){
        document.write('foo | ');
    };
}

A.prototype.protoFoo = function(){
        document.write('proto foo | ');
};

Function.prototype.protoFoo = function(){
    document.write('from function foo | ');
}

A.protoFoo();

function B(){
    this.super.call(this);
    console.log('ctor B');
    this.bar = function(){
        document.write('bar | ');
    };
}
    
B.prototype.protoBar = function(){
     document.write('proto bar | ');
};

function extend(subClass, superClass){
    //console.log(superClass.prototype);
    var F = function(){};
    F.prototype = superClass.prototype;  
    var p = subClass.prototype;
    subClass.prototype = new F;
    subClass.prototype.constructor = subClass;
    subClass.prototype.super = superClass;
    subClass.prototype.old = p;
}

extend(B, A);

var b = new B;
b.foo();
b.protoFoo();
b.bar();
b.old.protoBar();