JSFiddle - React, Tailwind, and code Playground

JavaScript

function extend(parent, fn) {
        var Class = function () {
            parent.call(this);
            fn.call(this);
        }
        Class.prototype = parent.prototype;
        Class.prototype.constructor = fn;
        return Class;
    }
    
    function foo(a) {
        var a = 1;
        this.getA = function () { return a; };
    }

    var child = extend(foo, function (a) {
        var b = 2;
        this.getB = function () { return b; };
      });
    
    var bar = extend(child, function () {
        var c = 3;
        this.getC = function () { return c; };
      });

    var obj = new bar("1");
    console.log(obj.getA()); //1
    console.log(obj.getB()); //2
    console.log(obj.getC()); //3
    
    console.log(obj instanceof bar); //true
    console.log(obj instanceof child); //true    
    console.log(obj instanceof foo); //true
    
    console.log(obj.constructor);
    console.log(obj.constructor.name); //How to retrieve "bar"?