当前位置: 首页 > 面试题库 >

如何克隆JavaScript ES6类实例

韩单弓
2023-03-14
问题内容

如何使用ES6克隆Javascript类实例

我对基于jquery或$ extend的解决方案不感兴趣。

我见过很多关于对象克隆的讨论,这些讨论表明问题非常复杂,但是使用ES6时,会出现一个非常简单的解决方案-我将其放在下面,看看人们是否认为它令人满意。

编辑:有人建议我的问题是重复的;我看到了这个答案,但它已有7年历史,并且使用ES6之前的js涉及非常复杂的答案。我建议我的问题(允许使用ES6)有一个非常简单的解决方案。


问题答案:

这很复杂。我做了很多尝试,最后,这种单行代码适用于我的自定义ES6类实例:

let clone = Object.assign( Object.create( Object.getPrototypeOf(orig)), orig)

它避免设置原型,因为他们说这会大大降低代码速度。

它支持符号,但不适用于getter /
setter方法,并且不适用于不可枚举的属性(请参见Object.assign()docs)。此外,可悲的是,克隆基本内部类(例如Array,Date,RegExp,Map等)似乎经常需要一些单独的处理。

结论:这是一团糟。我们希望,一旦有了本机且干净的克隆功能。



 类似资料:
  • 我已经在数据库中保存了一个JPA实体。 我想拥有它的副本(具有不同的id),并修改了一些字段。 最简单的方法是什么?例如: 将它的字段设置为并持久化它会起作用吗? 我是否必须为实体创建一个克隆方法(复制除之外的所有字段)? 还有其他方法吗(比如使用克隆框架)?

  • 本文向大家介绍如何实现对象克隆?相关面试题,主要包含被问及如何实现对象克隆?时的应答技巧和注意事项,需要的朋友参考一下 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

  • 问题内容: 我有一个其中包含许多bufferedimages的对象,我想创建一个新对象,将所有bufferedimages复制到新对象中,但是这些新图像可能会更改,并且我不希望通过更改原始对象图像来更改新对象图像。 明白了吗? 这有可能做到吗,有人可以建议一个好方法吗?我曾经想到过getSubImage,但在某处阅读过,该子映像的任何更改都被重新关联回了父映像。 我只希望能够获得BufferedI

  • 假设我有这门课: 以及子类: 我知道这是不可能的,但我想你明白我想要什么。如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。我想我想要但不允许的是: 如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。 除了扩展的抽象类,我怎么能做到“相同”?

  • 问题内容: 我有一个JPA实体已经存在于数据库中。 我想要一个副本(具有不同的ID),并修改了某些字段。 最简单的方法是什么?喜欢: 将其设置为字段并坚持下去会起作用吗? 我是否需要为实体创建一个克隆方法(复制以外的所有字段)? 还有其他方法(例如使用克隆框架)吗? 问题答案: 使用。它使bean不再链接到EntityManager。然后将ID设置为新ID(如果为自动,则为null),更改所需的字

  • 问题内容: 如何克隆 Java并同时在Java中克隆其项目? 例如,我有: 我希望其中的对象与狗列表中的对象不同。 问题答案: 你将需要迭代这些项目,然后逐个克隆它们,然后将克隆放入结果数组中。 显然,要使该方法起作用,你将必须使你的类实现接口并重写该方法。