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();