How to tell function and generator function apart?

Erik Arvidsson erik.arvidsson at gmail.com
Tue Mar 3 17:12:48 UTC 2015


Why do you want to do this?

It is an antipattern that we have covered before.

On Tue, Mar 3, 2015 at 5:41 PM Guilherme Souza <19gui94 at gmail.com> wrote:

> 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
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150303/9881aa1e/attachment-0001.html>


More information about the es-discuss mailing list