加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
05-手写深copy.html 876 Bytes
一键复制 编辑 原始数据 按行查看 历史
wangcai 提交于 2023-04-04 16:49 . xx‘
<script>
// 实现深copy
function deepClone(target, weakMap = new WeakMap()) {
if (target == null) return target;
if (target instanceof Date) return new Date(target);
if (target instanceof RegExp) return new RegExp(target)
// .....
if (typeof target !== "object") return target;
let cloneTarget = new target.constructor;
if (weakMap.get(target)) {
return weakMap.get(target)
}
weakMap.set(target, cloneTarget)
for (let key in target) {
if (target.hasOwnProperty(key)) {
cloneTarget[key] = deepClone(target[key], weakMap)
}
}
return cloneTarget;
}
let obj = { name: "码路", address: { city: "北京" } };
obj.xxx = obj; // 循环引用
let newObj = deepClone(obj);
console.log(newObj);
</script>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化