js实现深拷贝有两种方法第一(简单粗暴):let arr = [1, {a: 2}];let copyArr = JSON.parse( JSON.stringify(arr) );console.log(copyArr ) // [1, {a: 2}]arr[1].a = 3;console.log(copyArr ) // [1, {a: 2}]copyArr[1].a = 5;console.log(arr) // [1, {a: 2}]可以看出来,改变原数组arr,并没有对新数组copyArr产生影响;改变新数组copyArr也没有对原数组arr产生影响;第二(面试官大多数会问这种方法):let arr = [1, {a: 2}];function deepCopy(arr) { let copyArr = (arr.constructor === Array) ? [] : {}; // 判断是数组还是对象 for(let i in arr) { if(typeof arr[i] === ‘object’) { // 判断是值类型还是引用类型 copyArr[i] = deepCopy(arr[i]); // 引用类型的话进行递归操作 } else { copyArr[i] = arr[i]; // 值类型直接赋值 } } return copyArr;}let copyArr = deepCopy(arr);console.log(copyArr ) // [1, {a: 2}]arr[1].a = 3;console.log(copyArr ) // [1, {a: 2}]copyArr[1].a = 5;console.log(arr) // [1, {a: 2}]同样:改变原数组arr,并没有对新数组copyArr产生影响;改变新数组copyArr也没有对原数组arr产生影响;