JSFiddle - React, Tailwind, and code Playground

JavaScript

"use strict";
function define(SuperClass, name, proto)
{
    let ProtoFn = function(){};
    ProtoFn.prototype = SuperClass.prototype;
    let protoObj = new ProtoFn;
    
    var NewClass = new Function(
         "return function " + name + "(){ }"
    )();
    _.extend(protoObj, proto,
        {
            constructor: NewClass,
            _class: NewClass,
            _parent: SuperClass
        });
    NewClass.prototype = protoObj;
    NewClass.className = name;
    NewClass.define = define.bind(null, NewClass);

    return NewClass;
}
let UserModel = define(new Object(), 'UserModel', { /* UserModel proto */ });
let john = new UserModel( /* blabla */ );
console.log(john);