javascript - 我可以在创建对象时在该对象内部保留该对象的副本吗

标签 javascript html class object

我可以在对象创建时保留对象的副本吗

这是我创建一个新学生对象的函数:

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/

相关文章:

javascript - 在javascript中定义一个页面id

html - 如何让div出现在另一个前面?

HTML5 音频/视频停止缓冲区

php - 不在对象上下文调用类中的方法时使用 $this

C++:有很多对象

javascript - MVC 5 jquery更改其他 View 的值

javascript - Windows 8 HTML/JS 应用程序可以作为网站运行吗?

Javascript:迭代/循环遍历多个轴/方向?

php - 我尝试连接到 xampp 数据库但失败

python - 避免方法中参数过多