Open duyue6002 opened 5 years ago
function shallowClone(source) {
if(!source || typeof source !== 'object') {
throw new Error('error arguments');
}
let target = source instanceof Array ? [] : {};
for (let key in source) {
if (source.hasOwnProperty(key)) {
target[key] = sourse[key];
}
}
return target;
}
function deepClone(source) {
if (!source || typeof source !== 'object') {
throw new Error('error arguments');
}
let target = source instanceof Array ? [] : {};
for (let key in source) {
if (source.hasOwnProperty(key)) {
// 没有实现对Function/Date的深拷贝,但这类对象重新赋值时不会对源对象产生影响
if (source[key] && typeof source[key] === 'object') {
target[key] = deepClone(source[key]);
} else {
target[key] = source[key];
}
}
}
return target;
}
JSON.parse(JSON.stringify(obj))
,但是所有函数和原型成员会被忽略