深拷贝
第一种
function deepClone(obj) {
const objectMap = new Map();
const _objectMap = (value) =>{
const type = typeof value;
if (type !== 'object' || type === null) {
return value
}
if (objectMap.has(value)) {
return objectMap.get(value)
}
const result = Array.isArray(value) ? [] : {};
objectMap.set(value, result);
for (const key in value) {
result[key] = _objectMap(value[key])
}
return result
};
return _objectMap(obj)
}
第二种
function deepClone(obj) {
return new Promise((resolve) => {
const { port1, port2 } = new MessageChannel();
port1.postMessage(obj)
port2.onmessage = (msg) =>{
resolve(msg.data)
}
})
}
暂无标签