cloning javascript event object

前端 未结 4 1477
情歌与酒
情歌与酒 2020-11-28 13:07

Anybody know how to do a deep copy/cloning of a native javascript event object? I know I can create a new event object and set the appropriate properties manually to match

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-28 13:19

    Above code will not copy any getters/setters properly. Try:

    function cloneEvent(e) {
        if (e===undefined || e===null) return undefined;
        function ClonedEvent() {};  
        let clone=new ClonedEvent();
        for (let p in e) {
            let d=Object.getOwnPropertyDescriptor(e, p);
            if (d && (d.get || d.set)) Object.defineProperty(clone, p, d); else clone[p] = e[p];
        }
        Object.setPrototypeOf(clone, e);
        return clone;
    }
    

提交回复
热议问题