function SuperMouseEvent(type, dict) { var nativeEvt = new MouseEvent(type, dict); nativeEvt.__proto__ = SuperMouseEvent.prototype; return nativeEvt; } SuperMouseEvent.prototype = Object.create(MouseEvent.prototype); SuperMouseEvent.prototype.constructor = SuperMouseEvent; var mouseEvt = new MouseEvent("mousedown", { bubbles: true, detail: 1, view: window }); console.log(mouseEvt); var obj = {}; var mouseEvtCpy = new SuperMouseEvent(mouseEvt.type, mouseEvt); console.log(mouseEvtCpy instanceof SuperMouseEvent); console.log(mouseEvtCpy instanceof MouseEvent);