【发布时间】:2022-01-12 12:11:09
【问题描述】:
在 Javascript 中,给定一个生成器对象,我如何让它输出返回该生成器对象的生成器函数的名称?
换句话说:
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?
调用gen.name 不起作用,因为它不是function,而是generator object
【问题讨论】:
-
只是出于好奇,需要知道生成器函数
name的原因是什么。 OP 至少必须有权访问生成器函数作为参考。否则没有机会调用它。或者它只是 OP 正在处理的生成器?在后一种情况下,为什么 OP 需要知道生成器函数的name? (我想 OP 既不能访问也不能更改实现生成器函数的脚本/源。) -
您为什么希望它能够工作?函数的返回值从不隐式携带对返回它的函数的任何引用。您需要创建一个中间工厂来传递对函数的引用以及返回的生成器对象。
-
@PeterSeliger 用例是一个函数,它接收一个生成器对象并用它做一些事情,包括日志记录。这个函数在多个地方被调用,能够记录这个生成器对象属于哪个生成器函数是很有用的。我可以更改脚本源,但这是我希望不需要的添加代码。
-
@pilchard 当你这样说时它是有道理的。我想我希望这是因为我不是创建或返回生成器对象的人,而是别的东西。
标签: javascript generator iterable