JSFiddle - React, Tailwind, and code Playground

JavaScript

/*jslint browser: true, devel: true 
*/

(function () {

    "use strict";

    var OO = {

    // Class Maker

        Class: function () {
            var len = arguments.length,
                data = arguments[len - 1],
                Klass,
                Private = {};
            if (data.constructor === Object) {
                Klass = function () {};
            } else {
                Klass = data.constructor;
                delete data.constructor;
            }
            OO.extendPublic(Klass.prototype, data.Public);
            OO.extendPrivate(Private, data.Private);
            return Klass;
        },
        extendPrivate: function (target, source) {
        // Copy Private over  
            var prop;
            for (prop in source) {
                target[prop] = source[prop];
            }
        },
        extendPublic: function (target, source) {
        // Copy public over
            var prop;
            for (prop in source) {
                target[prop] = source[prop];
            }
        }
    };

    // Define a Class

    var Person = OO.Class({
        constructor: function (name_in, age_in) {
            var name = name_in,
                age = age_in,
                private_hold = {};
            //private_hold.name = name_in;
            //private_hold.age = age_in;
            //return private_hold;
        },
        Public: {
            getName: function () {
                return "connect_constructor_input_here";
            },
            getAge: function () {
                return "connect_constructor_input_here";
            }
        },
        Private: {
            name: '',
            age: ''
        }
    });

    var Josh = new Person('josh', 22);
    alert(Josh.getName() + ' | ' +  Josh.getAge());
    alert(Josh.age + ' | ' +  Josh.name);

}());