浅拷贝是指创建一个新的对象,并将原始对象的值复制到新对象中。浅拷贝不会复制原始对象的引用,因此,如果原始对象的值发生变化,新对象的值也会随之变化。
深拷贝是指创建一个新的对象,并将原始对象的值和引用都复制到新对象中。深拷贝会创建一个新的对象,并将原始对象的所有值和引用都复制到新对象中。因此,如果原始对象的值发生变化,新对象的值不会随之变化。
在 JavaScript 中,可以使用以下方法实现浅拷贝和深拷贝:
1、浅拷贝:使用
Object.assign()
方法。2、深拷贝:使用
JSON.parse()
和JSON.stringify()
方法。
以下是使用 Object.assign()
方法实现浅拷贝的示例:
const originalObject = {
name: 'John Doe',
age: 30,
address: {
street: '123 Main Street',
city: 'Anytown',
state: 'CA',
},
};
const newObject = Object.assign({}, originalObject);
console.log(newObject);
// { name: 'John Doe', age: 30, address: { street: '123 Main Street', city: 'Anytown', state: 'CA' } }
以下是使用 JSON.parse()
和 JSON.stringify()
方法实现深拷贝的示例:
const originalObject = {
name: 'John Doe',
age: 30,
address: {
street: '123 Main Street',
city: 'Anytown',
state: 'CA',
},
};
const newObject = JSON.parse(JSON.stringify(originalObject));
console.log(newObject);
// { name: 'John Doe', age: 30, address: { street: '123 Main Street', city: 'Anytown', state: 'CA' } }