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

272
Vistas
¿Cuál es el uso del método estático en javaScript? ¿Y cómo borro este error?

Escriba una clase llamada Grupo (ya que Set ya está tomado). Al igual que Set, tiene agregar, eliminar y tiene métodos. Su constructor crea un grupo vacío, add agrega un valor al grupo (pero solo si aún no es un miembro), delete elimina su argumento del grupo (si era un miembro) y devuelve un valor booleano que indica si su argumento es un miembro del grupo.

Use el operador ===, o algo equivalente como indexOf, para determinar si dos valores son iguales.

Dale a la clase un método from estático que tome un objeto iterable como argumento y cree un grupo que contenga todos los valores producidos al iterarlo.

Esta es la pregunta que necesito resolver y debajo está mi código que da error.

El error aquí es:

TypeError no detectado: this.add no es una función

No sé por qué se necesita este método estático aquí, por favor hágamelo saber. Y ayúdame a borrar este error.

 class Group { constructor() { this.group = []; return this; } add(value) { if (!this.has(value)) { this.group.push(value); return this; } } delete(value) { if (this.has(value)) { this.group = this.group.filter(x => x !== value) return this; } } has(value) { return this.group.includes(value) } static from(iterableObject) { for (let value of iterableObject) { this.add(value); } return this; } } let group = Group.from([10, 20]); console.log(group.has(10)); // → true console.log(group.has(30)); // → false group.add(10); group.delete(10); console.log(group.has(10)); //→ false

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El objetivo es:

Dale a la clase un método from estático que tome un objeto iterable como argumento y cree un grupo que contenga todos los valores producidos al iterarlo.

Entonces, dentro del método, necesitas

crea un grupo

que se puede hacer con new Group , entonces

contiene todos los valores producidos al iterar sobre él

con el bucle haciendo referencia a ese grupo recién creado, y luego devolver el grupo creado.

 static from(iterableObject) { const group = new Group(); for (const value of iterableObject) { group.add(value); } return group; } 

 class Group { constructor() { this.group = []; return this; } add(value) { if (!this.has(value)) { this.group.push(value); return this; } } delete(value) { if (this.has(value)) { this.group = this.group.filter(x => x !== value) return this; } } has(value) { return this.group.includes(value) } static from(iterableObject) { const group = new Group(); for (const value of iterableObject) { group.add(value); } return group; } } let group = Group.from([10, 20]); console.log(group.has(10)); // → true console.log(group.has(30)); // → false group.add(10); group.delete(10); console.log(group.has(10)); //→ false

No sé por qué se necesita este método estático aquí

Se puede pensar que un método estático tiene una apariencia similar a una función independiente (en términos de cómo se llama), excepto que es una propiedad de la clase misma. Podrías hacer equivalentemente

 const createGroupFrom = (iterable) => { // implementation here };

Pero ser estático generalmente indica una función que está relacionada con la clase, sin estar vinculada a una instancia particular ya existente. (Los métodos que están directamente relacionados con el trabajo en instancias ya existentes se implementan como métodos regulares no estáticos .

En esta situación, un método normal claramente no funcionaría, porque no se invocaría en una instancia existente; una instancia existente no existe. Entonces, las opciones son tener una función simple e independiente, o un método estático, si uno lo prefiere, y el requisito dado es usar un método estático.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Como se indica en MDN :

La palabra clave static define un método estático o una propiedad para una clase, o un bloque de inicialización estático de clase (consulte el enlace para obtener más información sobre este uso). No se pueden invocar métodos estáticos ni propiedades estáticas en instancias de la clase. En su lugar, se llaman en la propia clase .

En el método estático que tienes,

 static from(iterableObject) { for (let value of iterableObject) { this.add(value); } return this; }

Pero lo que querrá hacer es establecer una referencia a una nueva instancia de Group y devolver esa instancia:

 class Group { constructor() { this.group = []; return this; } add(value) { if (!this.has(value)) { this.group.push(value); return this; } } delete(value) { if (this.has(value)) { this.group = this.group.filter(x => x !== value) return this; } } has(value) { return this.group.includes(value) } static from(iterableObject) { var newGroup = new Group(iterableObject); for (let value of iterableObject) { newGroup.add(value); } return newGroup; } } let group = Group.from([10, 20]); console.log(group.has(10)); // → true console.log(group.has(30)); // → false group.add(10); group.delete(10); console.log(group.has(10)); //→ 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