Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

285
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!