deepClone.js
console.log(111); const obj1 = { age: 20, name: 'xxx', address: { city: 'beijing' }, arr: ['a', 'b', 'c'] } const obj2 = deepClone(obj1); console.log(1); obj2.address.city = 'shanghai' /* console.log(obj1.address.city) */ obj2.arr[0] = 'a1' console.log(obj1.address.city); console.log(obj1.arr[0]) function deepClone(obj = {}) { if (typeof obj != 'object' || obj == null) { return obj } let result if (obj instanceof Array) { result = []; } else { result = {} } for (let key in obj) { if (obj.hasOwnProperty(key)) { //保证key不是原型的属性 result[key] = deepClone(obj[key]) //递归 } } return result; }运行结果
