如何实现对一个 dom 元素进行拷贝, 包括它绑定的事件

使用cloneNode,传入 true 是深度拷贝

let newDom = oldDom.cloneNode(true);
// jquery
$("#oldDom").clone(true);

克隆对象

function clone(origin) {
    return Object.assign({},origin);
}

实现了对原始对象的克隆,但是只能克隆原始对象自身的值,不能克隆她继承的值,如果想要保持继承链,可以采用如下方法:

function clone(origin) {
    let originProto=Object.getPrototypeOf(origin);
    return Object.assign(Object.create(originProto),origin);
}

来源整理自:vue3js.cn 面试官系列