最终形态
// 深拷贝
function deepCopy(data) {
if(data === undefined || data === null) return data;
let __copy;
if(data instanceof Date) __copy = new Date(data);
else __copy = new data.constructor();
for(let key in data) {
if(!data.hasOwnProperty(key)) continue;
let item = data[key];
if(item instanceof Object) {
__copy[key] = deepCopy(item);
} else {
__copy[key] = item;
}
}
return __copy;
}
// 深度合并
function deepAssign(origin, obj) {
if(arguments.length > 2) {
return deepAssign(deepAssign(arguments[0], arguments[1]), ...([].slice.call(arguments, 2)));
}
for(const key in obj) {
if(!Object.prototype.hasOwnProperty.call(obj, key)) ;
else {
let item = obj[key],
o = origin[key],
isObj = item instanceof Object,
isArr = item instanceof Array;
if(!o || o.constructor !== item.constructor) {
origin[key] = isArr ? [].concat(item) : isObj ? deepAssign({}, item) : item;
} else {
origin[key] = isArr ? o.concat(item) : isObj ? deepAssign(o, item) : item;
}
}
}
return origin;
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。