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

288
Visualizações
Obtenga el nombre de la función del generador de un generador

En Javascript, dado un objeto generador, ¿cómo hago para que genere el nombre de la función generadora que devolvió ese objeto generador?

En otras palabras:

 function* thisIsMyName(i) { yield i; } const gen = thisIsMyName(10); console.log(gen.name); // How do I get this to output "thisIsMyName" using only the gen object?

Llamar gen.name no funciona ya que no es una función sino un objeto generador

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Me temo que no puede acceder así porque la referencia a la función que generó este generador está almacenada en una propiedad definida por un símbolo. Los símbolos son únicos y no se pueden recrear (pero no siempre, consulte Symbol.for ). Lo que significa que si no tiene la referencia a un símbolo, no puede obtener su valor.

Object.getOwnPropertySymbols() no devuelve los nativos.

Sin embargo, puede ver los accesorios de símbolo en la consola al inspeccionar la instancia:

Consola

Sin embargo, puede resolver esto con una función contenedora, es decir, una función que devolverá tanto el generador como la función del generador:

 function thisIsMyName(value){ const generatorFunction = function* thisIsMyName(i) { yield i; } return { generator : generatorFunction(value), generatorFunction: generatorFunction } } const gen = thisIsMyName(10); console.log(gen.generatorFunction.name) // prints thisIsMyName console.log(gen.generator.next()) // prints {value: 10, done: false}
about 4 years ago · Juan Pablo Isaza Relatório

0

De los comentarios:

Debería crear una fábrica intermedia que pasara una referencia a la función, así como el objeto generador devuelto.

No es realmente útil, pero puede ser algo como:

 const someGenerator = { *thisIsMyName(i = 1, limit = 10) { while (i < limit) { yield i++; } }, get name() {return this.thisIsMyName.name}, }; const myGen = { name: someGenerator.name, i: someGenerator.thisIsMyName(15, 20)}; console.log(myGen.i.next().value, myGen.name);

O ...

 function createGenerator(name, min = 1, max = 10) { function* xGen() { while (min < max) { yield min++; } }; return {gen: xGen(), name,}; }; const myGen = createGenerator(`myName`, 15, 20); const values = []; let nxt = {}; while (!nxt.done) { nxt = myGen.gen.next(); !nxt.done && values.push(nxt.value); } console.log(values.join(`, `), `\nmyGen.name = '${myGen.name}'`);

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