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

91
Vistas
Cómo encontrar si un método pertenece a super o - Ampliación de matrices y pruebas con ES6

Soy nuevo en OOP en ES6 y trato de entender cómo extender Array para poder crear canalizaciones. Estoy comenzando con un caso simple de extender Array ad anulando Array.filter y esperando result.hasOwnProperty("filter") sea true ... pero no lo es:

Entonces, ¿cómo prueba que el filtro de método ahora vive en la clase Lista de palabras?

 export class Wordlist extends Array{ constructor(...args){ super(...args) } filter(...args){ console.log("filtering") return super.filter(...args) } } // test describe.only('Wordlist.filter', ()=>{ it('should filter an array', ()=>{ const wordlist = new Wordlist('hello', 'rhubarb') const result = wordlist.filter(word => word === 'rhubarb') expect(result.length).toEqual(1) // pass expect(result).toEqual(["rhubarb"]) // pass expect(result.hasOwnProperty('filter')).toBe(true) // should pass but doesnt!!! expect(result.hasOwnProperty('reduce')).toBe(false) // passes }) })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El malentendido es sobre cómo funciona .hasOwnProperty() . Esto devuelve un valor booleano que indica si un objeto contiene directamente una propiedad específica. En su caso, está definiendo una propiedad para la clase que coloca la nueva propiedad .filter() en el prototipo del objeto, lo que significa que la propiedad .filter() NO está directamente en el objeto, sino que se hereda del prototipo del objeto .

Entonces, por definición, cuando la propiedad está solo en el prototipo, .hasOwnProperty() devolverá false .

Si desea ver si el result es en realidad un objeto de lista de Wordlist , puede usar:

 result instanceof Wordlist // should be true

para probar eso. También podrías hacer esto:

 Object.getPrototypeOf(result).hasOwnProperty('filter') // should be true

Y, para asegurarse de que no sea el mismo .filter que tiene una matriz, puede verificar esto:

 result.filter !== [].filter // should be false
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