JSFiddle - React, Tailwind, and code Playground

JavaScript

Function.prototype.callNew=function(args)
{
	var a=[];
	for(var i=0;i<args.length;i++)a.push("a["+i+"]");
	var fn=new Function("var a=arguments;return new this("+a.join(",")+");");
	return fn.apply(this,args);
}

function instanceExists(t,args)
{
	if(t instanceof args.callee)
	{
		return true;
	}else{
		return false;
	}
}

function requireInstance(t,args)
{
	var fn=args.callee;
	if(!instanceExists(t,args))
	{
		return fn.callNew(args);
	}
}

function Waffle(one,two,three)
{
	if(!instanceExists(this,arguments))
	{
		return requireInstance(this,arguments);
	}
	this.one=one;
	this.two=two;
	this.three=three;
}

Waffle.prototype.serve=function()
{
	var out=[];
	for(var j in this)
	{
		if(!this.hasOwnProperty(j))continue;
		out.push(j+' :'+this[j]);
	}
	return '{'+out.join(",\n")+'}';
}

var waffle=Waffle(1,2,3);
alert(waffle.serve());