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