如何使用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等)似乎经常需要一些单独的处理。
结论:这是一团糟。我们希望,一旦有了本机且干净的克隆功能。