How to tell function and generator function apart?

Guilherme Souza 19gui94 at
Tue Mar 3 16:41:20 UTC 2015

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?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list