JSFiddle - React, Tailwind, and code Playground

HTML

<div id="test">real</div>
<div id="test2">fake</div>

CSS

#test, #test2 {
    padding:3em;
    border:solid 1px #000;
    float:left;
}

JavaScript

function eventHandler(e) {
    var evt = new Event('click'),
        evt2 = document.createEvent('MouseEvent');

    evt2.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    console.log(e.constructor.__proto__ === evt.constructor.__proto__, 
                e.constructor.__proto__ === evt2.constructor.__proto__, 
                e.__proto__ === evt.__proto__, 
                e.__proto__ === evt2.__proto__,
               e.prototype === evt.prototype,
               e.prototype === evt2.prototype,
               e.toString(), 
               this);
}


document.getElementById("test").onclick = eventHandler;

document.getElementById("test2").onclick = function (e) {
    eventHandler.call(document.getElementById("test"), new DummyEvent());
}

function DummyEvent() {
    var dummy = document.createEvent("MouseEvent");
    //dummy.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    this.constructor.toString = function () {
        return "function MouseEvent() { [native code] }";
    }
    this.__proto__ = dummy.__proto__;
    this.constructor.__proto__ = dummy.constructor.__proto__;
    window.event = this;
    this.toString = function(){
        return "[object MouseEvent]";
    }
}

function SuperSuperDummy() {
    this.prop = true;
}

function SuperDummy() {}
SuperDummy.prototype = new SuperSuperDummy();
DummyEvent.prototype = new SuperDummy();