如何在 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));
但我不知道,也许这是一种不好的做法:/..
我想使用展开运算符克隆一个对象。但是,这些方法并未如图所示复制
我知道你可以 Object.Assign() 但我正在寻找一种使用 ES6 语法来做到这一点的方法
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));
但我不知道,也许这是一种不好的做法:/..