我有这样一段JavaScript代码:
class Foo {
constructor() {
this.b = 1;
this.getB = () => { return this.b; };
}
}
const normalFoo = new Foo();
const clonedFoo = magicClone(normalFoo);
clonedFoo.b = 5;
console.log(clonedFoo instanceof Foo); // should be true
console.log(clonedFoo.getB()); // should be 5
我想知道可以用什么替代
magicClone
以获得期望的结果(例如,尊重箭头函数绑定的克隆)。我可以接受任何可怕的hack,也可以接受在大多数情况下有效的解决方案,只要它们在这种情况下有效。 这主要是为了我的教育 :)
请不要将此问题关闭为重复- 克隆对象已经被问过很多次,但我找不到一个单一的答案来解决这个问题。
Object.assign
,lodash的cloneDeep
,jQuery的clone等都无法处理此情况。