...展开运算符,
Object.assign(),
Array.prototype.concat()
Array.prototype.slice()
JSON.parse(JSON.stringify())
function deepClone(target) {
const currentType = (target) => {
return Object.prototype.toString.call(target).slice(8, -1)
}
let result;
switch (currentType(target)) {
case 'Object': result = {}; break
case 'Array': result = []; break
default: return target;
}
for (let key in target) {
if (currentType(target[key]) === 'Object' || currentType(target[key]) === 'Array') result[key] = deepClone(target[key])
else result[key] = target[key]
}
return result
}