tian-yan-yan
Version:
一套不算好用的组件
62 lines (46 loc) • 1.28 kB
JavaScript
/*
* 深拷贝
* @author: 张文
* @date 2022-02-16
* */
import {cloneDeep} from "lodash/lang";
/**
* 深拷贝
* @author 张文
* @param {*} data 需要拷贝的原始数据
* @return {*} 返回拷贝后的数据
*
* */
export function DeepCopy(data) {
// 用于判断当前数据是否为DOM对象,没有深拷贝,可能会存在变量改变的风险
/*if (data instanceof Element) {
return data
}*/
// 文档:https://www.lodashjs.com/docs/lodash.cloneDeep
return cloneDeep(data)
/*if (useLodash) {
return cloneDeep(data)
}
// 非对象直接返回
if (typeof data !== 'object') {
return data
}
// 用于判断当前数据是否为DOM对象
if (data instanceof Element) {
return data
}
// 判断复制的目标是数组还是对象
const copy = Array.isArray(data) ? [] : {};
for (let keys in data) {
// 不读取对象的私有属性
if (/^_/.test(keys)) break
// 如果值是对象或者数组,就递归一下
if (data[keys] && typeof data[keys] === 'object') {
copy[keys] = tyDeepCopy(data[keys]);
} else {
// 如果不是,就直接赋值
copy[keys] = data[keys];
}
}
return copy;*/
}