Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

278
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda