Javascript 复制由数组扩展的类的实例

Javascript 复制由数组扩展的类的实例,javascript,Javascript,假设我们得到了以下类: 类内容扩展数组{ 删除(索引){ 返回[…this.slice(0,索引),…this.slice(索引+1)] } 副本(){ //创建一个副本! } } 常量内容=新内容('alpha'、'beta'、'gamma') const copy=content.copy() console.log(copy.delete(1))/[“alpha”,“gamma”] 如何创建此类实例的副本?.slice可以浅层复制数组。幸运的是,.slice创建的新实例将自动成为子类的实

假设我们得到了以下类:

类内容扩展数组{
删除(索引){
返回[…this.slice(0,索引),…this.slice(索引+1)]
}
副本(){
//创建一个副本!
}
}
常量内容=新内容('alpha'、'beta'、'gamma')
const copy=content.copy()
console.log(copy.delete(1))/[“alpha”,“gamma”]

如何创建此类实例的副本?

.slice
可以浅层复制数组。幸运的是,
.slice
创建的新实例将自动成为子类的实例;无需手动执行任何其他操作,它将自动返回
内容
实例:

类内容扩展数组{
删除(索引){
返回[…this.slice(0,索引),…this.slice(索引+1)]
}
副本(){
返回这个.slice();
}
}
常量内容=新内容('alpha'、'beta'、'gamma')
const copy=content.copy()

console.log(copy.delete(1))/[“alpha”,“gamma”]
您可以在类中使用
…此
来访问数组中的值

spread运算符允许您设置构造函数参数

类内容扩展数组{
删除(索引){
返回[…this.slice(0,索引),…this.slice(索引+1)]
}
副本(){
返回新内容(…此);
}
}
常量内容=新内容('alpha'、'beta'、'gamma')
const copy=content.copy()

console.log(copy.delete(1))/[“alpha”,“gamma”]
欢迎使用堆栈溢出!请通读一遍,尤其是你在这里的最佳选择是做你的研究,对于相关的话题等等,并尝试一下。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会很乐意帮助的。@T.J.Crowder不太清楚你为什么会发这个帖子。这是一个相当简单的问题。也许要找一个重复的问题?@RobertHarvey-因为这个问题并没有显示出任何试图解决它所提出的问题的企图,即使在今天,这(据我所知)也是意料之中的。(我不是在尝试制定新规则;我是在尝试遵循网站的规则。)复制数组子类与复制数组略有不同(尽管由于数组的方法相当智能,大多数方法都是……可行的)。不幸的是,使用数组构造函数有一些问题
new Array(3)
将提供一个包含3个空插槽的数组,并且没有数组索引自己的属性,因此
新内容(…此)
解析为数组索引的
…此
将不起作用。感谢您的深入评论。我已经对你的答案投了赞成票。我将把我的答案留在这里进行编辑,以便人们可以查看。通常的解决方案是以某种方式使用
Array.of
。也许
Array.of.apply(Content,this)
,但不确定这是否有效。或者
Object.assign(Object.create(Content.prototype))
谢谢!它很方便。