JSFiddle - React, Tailwind, and code Playground

by avrelian

JavaScript

var debug = (function(){
    var debug = {
        Man: 1,
        Woman: 1,
        all: 0
    };
    return function(obj){
        (debug[obj.type] || debug['all']) && console.log(arguments);
    };
})();

var extend = function(obj){
    return $.extend.apply(obj, arguments);
};

var create = function(o){
    var constructor = function(data){
        debug(this, data);
        extend(this, data || {});
        this.init();
        return this;
    };
    var F = eval("1 && function " + o.type + "(data){ return constructor.call(this, data) }");
    F.prototype = o;
    return F;
};

var Man = create({
    type: 'Man',
    name: '',
    init: function(){
        this.address = 'Mr. ' + this.name;
    }
});

var Woman = create({
    type: 'Woman',
    name: '',
    init: function(){
        this.address = 'Mrs. ' + this.name;
    }
});

var john = new Man({ name: 'John Doe' });
var sarah = new Woman({ name: 'Sarah Parker' });