我想用Object.assign
克隆一個類的實例,包括任何方法。是否有可能只與Object.assign
或我應該使用類似lodash deepClone
的東西?是否有可能使用Object.assign克隆一個對象的方法?
class Foo {
constructor() {
this.a = 1;
this.b = 2;
}
add() {
return this.a + this.b;
}
}
const foo1 = new Foo();
console.log(foo1.add());
console.log(foo1.b);
// ? Where did the add go?
const foo2 = Object.assign({}, foo1, { b: 99 });
console.log(foo2.add());
console.log(foo2.b);
示例 - http://jsbin.com/dacopazanu/edit?js,console
從[MDN(https://開頭開發商.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign),Object.assign()方法只將源對象的枚舉和自己的屬性複製到目標對象。而且我無法發現'add()'是一個枚舉或屬性。你爲什麼不在'foo2'上實例化另一個'new Foo()'並且將它的''b'分配給'99'? – choz