У меня есть этот пример кода:
class TestClass extends Array {
constructor() {
console.log( 'constructor' );
let ar = [];
ar.push( { id: 1, name: 'a' } );
ar.push( { id: 2, name: 'b' } );
ar.push( { id: 3, name: 'c' } );
ar.push( { id: 4, name: 'd' } );
// finalizing object
super( ...ar );
}
Foo() {
console.log( 'foo' );
return this.filter( item => item.id > 2 );
}
}
let t = new TestClass();
console.log( t.Foo() );
Это более простая версия того, что я уже написал.Мое приложение работало до сих пор, но остановилось в тот момент, когда мне нужно было отфильтровать данные в моем расширенном массиве.Я обнаружил, что проблема заключается в том, что вызов функции фильтра для объекта моего класса внутренне вызывает конструктор.Код выше показывает этот пример.Есть ли способ обойти эту проблему, потому что я не могу снова вызвать конструктор в этой точке.Кроме того, я обнаружил (используя этот простой TestClass
), что фактический вывод не тот, который я ожидал - я получил массив из 4 элементов с идентификаторами 3, 4, 3, 4. Может кто-нибудь объяснить, что здесь происходит?