我可以在对象创建时保留对象的副本吗
这是我创建一个新学生对象的函数:
function student(id, name, marks){
this.id = id;
this.name = name;
this.marks = marks;
}
我想在对象内部初始化时创建对象的副本: 我想到了这个:
function student(id, name, marks){
this.id = id;
this.name = name;
this.marks = marks;
this.baseCopy = this;
}
但问题是它在 baseCopy 中给了我当前对象副本的无限循环;并且当我更新对象的任何属性时它也会自动更新。
<强>1。这怎么可能使得我可以在创建对象时在该对象内部保留具有初始值的对象副本?
最佳答案
因为您已经在使用 jQuery,所以一般答案是:
this.baseCopy = $.extend(true, {}, this);
将生成当时存在的任何属性值的“深层”副本,而不会递归地引用自身。
注意 - 我确实包含了一些通用的 JS 代码,但随后 OP 完全改变了问题,因此恢复到仅使用 jQuery 更简单。这当然会复制直接存在于对象上的任何方法,尽管如果编写得当,这些方法将位于对象的原型(prototype)上。
关于javascript - 我可以在创建对象时在该对象内部保留该对象的副本吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968409/