防栈溢出函数 深拷贝
优点:
(1)不会栈溢出
(2)支持很多层级的数据
function cloneLoop(x) {
const root = {
};
// 栈
const loopList = [
{
parent: root,
key: undefined,
data: x,
}
];
while(loopList.length) {
// 深度优先
const node = loopList.pop();
const parent = node.parent;
const key = node.key;
const data = node.data;
// 初始化赋值目标,
// key为undefined则拷贝到父元素,
// 否则拷贝到子元素
let res = parent;
if (typeof key !== 'undefined') {
res = parent[key] = {
};
}
for(let k in data) {
if (data.hasOwnProperty(k)) {
if (typeof data[k

本文探讨JavaScript中的深拷贝技术,包括防止栈溢出的策略。内容涵盖浅拷贝的基本概念,以及针对普通对象属性的简单深拷贝实现。进一步讲解复杂深克隆,不仅涉及内置对象如Date、RegExp,还解决了函数及循环引用的处理问题。
最低0.47元/天 解锁文章
1043

被折叠的 条评论
为什么被折叠?



