【发布时间】:2021-09-04 04:39:33
【问题描述】:
当我尝试扩展 Array 类时:
class Collection extends Array {
constructor(array){
super(...array)
}
getTimes(){
return this.map(value=> value.getTime())
}
min(){
return new Date(Math.min(...this.getTimes()))
}
}
const array = ['2000/02/01','2000/02/02']
const dates = array.map(value => new Date(value))
const test = new Collection(dates)
console.log(test[Symbol.iterator]); //Iterator exists
console.log(test.min()); ///Error: Found non-callable @@iterator
由于某种原因出现此错误,但是当我们这样做时:
class Collection extends Array {
static from(array){ /// Using a Factory instead of a constructor
return new Collection(...array)
}
...
...
}
const test = Collection.from(dates)
console.log(test.min()); //returns the Date
一切正常。为什么构造函数与迭代器有问题??
【问题讨论】:
-
您确定
.from()有效吗?我仍然面临.from()方法的问题:jsfiddle.net/3p6y81dc -
@NickParsons 我能够让 Array.from() 工作。你已经把事情的顺序调换了。试试这个:jsfiddle.net/9eqwg1nd
-
@ScottyJamison 啊,好的,谢谢! :)
标签: javascript arrays extends