Ecmascript 6 添加用于克隆类对象的方法
我希望能够克隆我的类的对象。我应该如何为下面的类实现clone方法Ecmascript 6 添加用于克隆类对象的方法,ecmascript-6,Ecmascript 6,我希望能够克隆我的类的对象。我应该如何为下面的类实现clone方法 export default class Foo { constructor(data) { this.name = data.firstName + " " + data.lastName this.id = data.objectId } clone(s){ } } 只需创建该类的另一个实例并复制属性: clone() { return Objec
export default class Foo {
constructor(data) {
this.name = data.firstName + " " + data.lastName
this.id = data.objectId
}
clone(s){
}
}
只需创建该类的另一个实例并复制属性:
clone() {
return Object.assign(Object.create(Object.getPrototypeOf(this)), this);
// or simply
// return Object.assign(new this.constructor({}), this);
}
您还可以传递选项,以便按照预期在构造函数中初始化属性:
clone() {
return new Foo({
firstName: this.name.split(" ")[0],
lastName: this.name.split(" ").slice(1).join(" "),
objectId: this.id
});
}
但是,请注意,创建具有相同(但假定是唯一的)id的多个实例可能不是最好的主意。只需创建该类的另一个实例并复制属性:
clone() {
return Object.assign(Object.create(Object.getPrototypeOf(this)), this);
// or simply
// return Object.assign(new this.constructor({}), this);
}
您还可以传递选项,以便按照预期在构造函数中初始化属性:
clone() {
return new Foo({
firstName: this.name.split(" ")[0],
lastName: this.name.split(" ").slice(1).join(" "),
objectId: this.id
});
}
但是,请注意,创建具有相同(但假定是唯一的)id的多个实例可能不是最好的主意。如果要从类的一个实例克隆到另一个实例,可以使用:
假设要从类的一个实例克隆到另一个实例,可以使用:
请记住,如果您碰巧绑定了类构造函数中的任何方法,这将导致危险的失败,因为绑定的方法也会被复制。如果您希望安全起见,你可以通过
this
的元素for
吗?请记住,如果你碰巧绑定了类构造函数中的任何方法,这将是危险的失败,因为绑定的方法也会被复制。如果你想安全起见,你可以通过this
的元素for
吗?