如何在 ES6 中复制对象方法

How to copy object methods in ES6

我想使用展开运算符克隆一个对象。但是,这些方法并未如图所示复制

我知道你可以 Object.Assign() 但我正在寻找一种使用 ES6 语法来做到这一点的方法

的解决方案涉及深度克隆:我只对复制方法和属性感兴趣

处的解决方案利用了 Object.Assign()

class Test {
  toString() {
    return "This is a test object";
  }
}

let test = new Test();
let test2 = { ...test };

console.log(String(test));
console.log(String(test2));

// Output: This is a test object
// Output: [object Object]

这个:

class Test {
  toString() {
    return "This is a test object";
  }
} 

没有定义任何对象方法严格来说。它定义了 class 方法。

您需要将方法作为 "own properties" 直接附加到对象,以便传播复制它们:

class Test {
  constructor() {
    // define toString as a method attached directly to
    // the object
    this.toString = function() {
      return "This is a test object";
    }
  }
}

let test = new Test();
let test2 = { ...test };

console.log(String(test));
console.log(String(test2));

我想你可以这样做:

class Test {
  toString() {
    return "This is a test object";
  }
}

let test = new Test();
let test2 = {};

test2.__proto__ = test.__proto__;

console.log(String(test));
console.log(String(test2));

但我不知道,也许这是一种不好的做法:/..