JSFiddle - React, Tailwind, and code Playground

HTML

<textarea rows="30" cols="80">var Square = new Class(function (ctor, uber) {
    *ctor = constructor;

    var side;

    function constructor(length) {
        side = length;
    }

    this.area = function () {
        return side * side;
    };

    return &uber;
});

var Cube = new Class(function (ctor, uber) {
    *ctor = constructor;

    function constructor(side) {
        uber(side);
    }

    this.area = function () {
        return 6 * uber.area();
    };

    return &uber;
}, Square);

var cube = new Cube(5);
alert(cube.area());

function Class(claus, Uber) {
    Claus.__proto__ = Uber === void 0 ? Class.prototype : Uber;

    return Claus;

    function Claus() {
        var self = this;
        var called;

        var uber = Uber === void 0 ? function () {
            throw new Error("No uber class specified.");
        } : function () {
            if (!called) {
                called = "Cannot call uber class constructor more than once.";

                var args = Array.prototype.slice.call(arguments);
                args = Array.prototype.concat.call([null], args);
                var base = new (Function.prototype.bind.apply(Uber, args));

                self.__proto__.__proto__ = base;
                self.__proto__.__proto__.constructor = Claus;

                *uber = base;
            } else throw new Error(called);
        };

        var constructor = new Function;
        uber = claus.call(this, &constructor, uber);
        constructor.apply(this, arguments);
    };
}</textarea><button>Run</button>

JavaScript

var textarea = document.getElementsByTagName("textarea")[0];
var button = document.getElementsByTagName("button")[0];

button.addEventListener("click", function () {
    var script = textarea.value.replace(/&([$A-Z_][$0-9A-Z_]*)/gi, (function () {
        var pointer = new String("function(value){if(value===void 0)return upvalue;else upvalue=value;}");
        return function (value, identifier) {return pointer.replace(/upvalue/g, identifier);};
    }()));

    script = script.replace(/\*([$A-Z_][$0-9A-Z_]*)\s*(=|\+=|-=|\*=|\/=|%=|&=|\|=|\^=|<<=|>>=|>>>=)\s*(.*);/gi, function (value, identifier, operator, expression) {
        if (operator === "=") return identifier + "(" + expression + ");";
        else return identifier + "(" + identifier + "()" + operator.slice(0, -1) + "(" + expression + "));";
    });

    script = script.replace(/\*([$A-Z_][$0-9A-Z_]*)/gi, function (value, identifier) {return identifier + "()";});

    try {Function.call(null, script)();} 
    catch (error) {alert(error);}
}, false);