Here is how to get your answer:
g.toString().startsWith("function*")
Since being a generator function (in contrast with being a function that may
return an iterator) is a question of implementation rather of behaviour, I
think that peeking at the source code using `.toString()` is the right way to
do it.
—Claude
> Le 3 mars 2015 à 17:41, Guilherme Souza <[email protected]> a écrit :
>
> Hi all,
>
> I was wondering how one could check if a given function is a generator
> function, is a cross-realm way:
>
> ```
> let f = function(){}
> let g = function*(){}
>
> typeof f === typeof g // 'function'
>
> f instanceof Function // true, but only in the same Realm
> g instanceof Function // true, but again only in the same Realm
>
> let GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
> f instanceof GeneratorFunction // false
> g instanceof GeneratorFunction // true, but only in the same Realm
>
> // This works, but relies on Function.prototype being a function itself.
> typeof Object.getPrototypeOf(f) // 'function'
> typeof Object.getPrototypeOf(g) // 'object'
> ```
>
> So what is the recommended way to do this type of check?
> Would something like `Array.isArray` for generator functions be helpful?
>
> Regards,
> Gui
>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss