使用 spread 运算符克隆类实例时的方法上下文问题

Issues with methods context when cloning a class instance with spread operator

提问人:Juanjo 提问时间:11/25/2021 更新时间:11/25/2021 访问量:167

问:

我在克隆类实例时发现了 spread 运算符的这个问题。方法上下文保留在原始实例中。有人知道如何解决它吗?

class Person {
   constructor(name) {
      this.name = name;
      this.setName = name => {
         this.name = name;
      };
   }
}

const a = new Person('John');
console.log(a.name); //John

const b = { ...a };
console.log(b.name); //John

b.setName('Paul');
console.log(b.name); //John

console.log(a.name); //Paul

JavaScript 方法 this spread

评论

0赞 VLAZ 11/25/2021
你不应该首先克隆带有传播的类,因为你也会失去类。
0赞 VLAZ 11/25/2021
这似乎是一个 XY 问题,您要解决的总体任务是什么?
0赞 Diogo Simões 11/25/2021
看这个: - stackoverflow.com/questions/728360/... - stackoverflow.com/questions/41474986/...
0赞 Yousaf 11/25/2021
如果要克隆实例,请在类中创建一个返回新实例的方法。

答: 暂无答案