One use case is for coroutine runners which accept either generators or
generator functions:

https://github.com/deanlandolt/copromise/blob/master/copromise.js#L34-L36

Is there a better way to accomplish this?


On Tue, Mar 3, 2015 at 12:12 PM, Erik Arvidsson <[email protected]>
wrote:

> 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 <[email protected]> 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
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>
> _______________________________________________
> 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

Reply via email to