方法:
function deepCopy (data) {
let dataTmp = undefined
if (data === null || !(typeof data === 'object')) {
dataTmp = data
} else {
let type = data.constructor.name
type === 'Array' && (dataTmp = [])
type === 'Object' && (dataTmp = {})
for (let key in data) {
dataTmp[key] = deepCopy(data[key])
}
}
return dataTmp
}
測試用例:
let test = [1, 2, [3, { name: { first: '牛頓', last: ['艾薩克', '物理學家'] } }]]
let result = deepCopy(test)
result[2][1].name.last[1] = '理論物理學家'
console.log(test, result)
結果: