这很复杂。我做了很多尝试,最后,这种单行代码适用于我的自定义ES6类实例:
let clone = Object.assign( Object.create( Object.getPrototypeOf(orig)), orig)
它避免设置原型,因为他们说这会大大降低代码速度。
它支持符号,但不适用于getter /
setter方法,并且不适用于不可枚举的属性(请参见Object.assign()docs)。此外,可悲的是,克隆基本内部类(例如Array,Date,RegExp,Map等)似乎经常需要一些单独的处理。
结论:这是一团糟。我们希望,一旦有了本机且干净的克隆功能。



