gpt4 book ai didi

javascript - 是否可以使用 Object.assign 来克隆对象及其方法?

转载 作者:行者123 更新时间:2023-12-03 07:02:28 25 4
gpt4 key购买 nike

我想使用Object.assign来克隆类的实例,包括与之相关的任何方法。是否可以只使用 Object.assign 或者我应该使用像 lodash deepClone 这样的东西?

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

最佳答案

Object.assign 仅复制自己的 可枚举属性,而继承的class方法则不然。

但无论如何你都不想将它们复制到 clone an instance ,您想要创建一个继承自同一原型(prototype)的对象:

const foo2 = Object.assign(Object.create(Object.getPrototypeOf(foo1)), foo1);

关于javascript - 是否可以使用 Object.assign 来克隆对象及其方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36980034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com