Javascript复制实例详解
前言
Javascript中的复制实例是指复制一份与原始实例相同的对象,包括对象的属性、方法以及原型对象等。本文将详细介绍Javascript中实现对象复制的方法和技巧。
浅复制和深复制
在Javascript中,我们经常需要将对象复制一份来进行操作和修改,比如修改原对象的属性值、添加或删除属性,而又不想影响到原对象,则需要使用复制实例。在对象复制中,一般会涉及到浅复制和深复制两种方式。
浅复制是复制出来的新对象与原对象共用一份原型对象,所以修改新对象或原对象中的原型对象都会影响到彼此;而深复制则是完全独立地复制出一份新的对象,之后修改两者互不影响。
使用Object.assign()进行浅复制
在Javascript中,可以使用内置函数Object.assign()来进行浅复制。具体实现方法如下:
let sourceObj = {name: 'Tom', age: 18};
let targetObj = Object.assign({}, sourceObj);
上述代码中的sourceObj是要被复制的原始对象,而targetObj是使用Object.assign()函数复制出来的新对象。需要注意的是,Object.assign()函数的第一个参数是目标对象,也是最终生成的新对象;从第二个参数开始是需要复制的源对象,可以是多个,用逗号隔开。
使用JSON.parse和JSON.stringify进行深复制
在Javascript中,可以使用JSON.parse()和JSON.stringify()配合使用来实现深复制。具体实现方法如下:
let sourceObj = {name: 'Tom', age: 18};
let targetObj = JSON.parse(JSON.stringify(sourceObj));
上述代码中,sourceObj是要被复制的原始对象,而targetObj是使用JSON.parse()和JSON.stringify()函数复制出来的新对象。需要注意的是,此方式仅适用于没有方法和循环引用的对象。
示例说明一:复制一个简单对象
let sourceObj = {name: 'Tom', age: 18};
let targetObj = Object.assign({}, sourceObj);
console.log(targetObj); // {name: 'Tom', age: 18}
上述代码中,我们使用Object.assign()函数复制出了一个与原始对象sourceObj相同的新对象targetObj,输出结果为{name: 'Tom', age: 18}。
示例说明二:复制一个嵌套对象
let sourceObj = {
name: 'Tom',
age: 18,
address: {
province: 'Guangdong',
city: 'Guangzhou'
}
};
let targetObj = JSON.parse(JSON.stringify(sourceObj));
console.log(targetObj); // {name: 'Tom', age: 18, address: {province: 'Guangdong', city: 'Guangzhou'}}
上述代码中,我们使用JSON.parse()和JSON.stringify()函数深复制了一个嵌套对象sourceObj,并将其赋值给targetObj。输出结果为{name: 'Tom', age: 18, address: {province: 'Guangdong', city: 'Guangzhou'}},其中address对象也被完整复制了一份。
结语
本文介绍了Javascript中的复制实例方法和技巧,以及浅复制和深复制的区别与使用场景。希望能对广大读者有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript复制实例详解 - Python技术站