浅拷贝、深拷贝一个引用类型数据。 js
时间: 2024-06-16 13:06:47 浏览: 82
在JavaScript中,拷贝和深拷贝是用来复制引用类型数据的两种不同方式。
浅拷贝是指创建一个新的对象或数组,然后将原始对象或数组的引用复制给新对象或数组。这意味着新对象或数组与原始对象或数组共享相同的内存地址,当修改其中一个对象或数组时,另一个对象或数组也会受到影响。
深拷贝是指创建一个新的对象或数组,并递归地复制原始对象或数组的所有层级。这意味着新对象或数组与原始对象或数组完全独立,修改其中一个对象或数组不会影响另一个对象或数组。
下面是浅拷贝和深拷贝的示例代码:
浅拷贝:
```javascript
const original = { name: 'John', age: 30 };
const shallowCopy = Object.assign({}, original);
original.age = 40;
console.log(original); // { name: 'John', age: 40 }
console.log(shallowCopy); // { name: 'John', age: 30 }
```
深拷贝:
```javascript
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy;
if (Array.isArray(obj)) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
return copy;
}
const original = { name: 'John', age: 30 };
const deepCopy = deepCopy(original);
original.age = 40;
console.log(original); // { name: 'John', age: 40 }
console.log(deepCopy); // { name: 'John', age: 30 }
```
阅读全文