防栈溢出函数 深拷贝
优点:
(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