我想使用传播运算符克隆一个对象。但是,方法并没有复制如图所示
我知道您可以执行Object.Assign(),但我正在寻找一种使用ES6语法实现此目的的方法
Deep copy in ES6 using the spread syntax处的解决方案涉及深度克隆:我只对复制方法和属性感兴趣
How to clone a javascript ES6 class instance处的解决方案使用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]
答案 0 :(得分:2)
此:
class Test {
toString() {
return "This is a test object";
}
}
严格来说,没有定义任何 object方法。而是定义了类方法。
您需要将方法作为“自身属性”直接附加到对象上,以便传播以复制它们:
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));
答案 1 :(得分:0)
我认为您可以这样做:
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));
但是我不知道,也许这是一种不好的做法:/ ..