一尘不染

如何克隆JavaScript ES6类实例

node.js

如何使用ES6克隆Javascript类实例。

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

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

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


阅读 243

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

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

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

2020-07-07