0216tool_xiaoye
Version:
叶永洁自定义工具函数库
43 lines (40 loc) • 1.32 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>深拷贝</title>
</head>
<body>
<script src="../dist/yeyongjie.js"></script>
<script>
/*
实现深拷贝
1). 大众乞丐版
问题1: 函数属性会丢失
问题2: 循环引用会出错 -->超出最大调用栈,内存溢出
2). 面试基础版本
解决问题1: 函数属性还没丢失
3). 面试加强版本
解决问题2: 循环引用正常
4). 面试加强版本2(优化遍历性能)
数组: while | for | forEach() 优于 for-in | keys()&forEach()
对象: for-in 与 keys()&forEach() 差不多
*/
const obj = {
a:1,
b:[1,2,3],
c:{C:1},
d : function (){}
}
//循环引用
obj.b.push(obj.c)
obj.c.D = obj.b
// const cloneObj = xiaoYe.deepClone1(obj)
// const cloneObj = xiaoYe.deepClone2(obj)
const cloneObj = xiaoYe.deepClone3(obj)
// const cloneObj = xiaoYe.deepClone4(obj)
console.log(cloneObj, obj.b === cloneObj.b, )
</script>
</body>
</html>