Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

240
Vistas
Array map calls the constructor of a class that extends Array instead of calling Array constructor

Calling map() on an instance text of ConsoleText class that extends Array results in a ConsoleText(text.length) call (constructor input: 2 in the last line).
How to fix it so that text.map() calls Array constructor instead? Or it is a feature of inheritance?

EDIT: found an answer here

'use strict'

let initializingText = true;

class ConsoleText extends Array {
  constructor(strings) {
    console.log('constructor input:', strings);
    if (initializingText) {
      super(...strings);
    } else {
      super('item1', 'item2', 'item3', 'item4', 'item5');
    }
  }
}

let text = new ConsoleText(['a', 'b']);   // constructor input: (2) ['a', 'b']

console.log('text:', text);   // text: ConsoleText(2) ['a', 'b']

initializingText = false;   // switch to escape error destructuring a number

console.log(text.map(() => 'q'));   // constructor input: 2
                                    // ConsoleText(5) ['q', 'q', 'item3', 'item4', 'item5']
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Array.constructor accepts two different types of arguments:

  • new Array(element0, element1, /* … ,*/ elementN) - list of elements to create new array
  • new Array(arrayLength) - array length, it will create an empty array then.

So when you call Array.map, it will create a new array with the same instance class, pass array length into constructor and then will use Array.push to update that array. That is the reason why map logs array length in your case.

Furthermore, I do not recommend extending default data structure cause it can be really confusing. Maybe in your case you can just create a simple function, that returns generated array?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda