javascript - 如何在javascript中的两个现有对象之间复制
问题描述
我有两个相同类型的对象,我想将其中一个的内容复制到另一个。
const Invoice1 = new InvoiceModel();
const Invoice2 = new InvoiceModel();
现在为了有类似的东西:Invoice2 = Invoice1
看完之后 :
我尝试使用以下任何命令,但所有命令都说 invoice2 未在运行时定义:
Invoice2 = { ...Invoice1 }; //OR
Invoice2 = Object.assign({}, Invoice1); //OR
Invoice2 = JSON.parse(JSON.stringify(Invoice1));
最后我通过阅读这篇文章( https://medium.com/@Farzad_YZ/3-ways-to-clone-objects-in-javascript-f752d148054d)使用此功能复制对象的内容:
function CopyObject(src, target) {
for (let prop in src) {
if (src.hasOwnProperty(prop)) {
target[prop] = src[prop];
}
}
return target;
}
我想知道除了使用上述功能之外,还有什么更清洁的方法吗?
我已经阅读了很多关于这个问题的帖子,但它们都创建了一个新对象。
解决方案
我建议在原型中创建一个InvoiceModel
自动为您执行此操作的方法。
class InvoiceModel {
constructor(num) {
this.num = num
}
duplicate() {
return Object.assign(Object.create(this), this)
}
}
const obj1 = new InvoiceModel(10)
console.log(obj1.num)
const obj1Copy = obj1.duplicate()
console.log(obj1Copy.num)
console.log(obj1Copy === obj1)