function isGenerator(obj) {
return 'function' == typeof obj.next && 'function' == typeof obj.throw;
}
function isGeneratorFunction(obj) {
var constructor = obj.constructor;
if (!constructor) return false;
if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;
return isGenerator(constructor.prototype);
}
function* gen() {
yield this.name;
return this.age;
}
const user = {
name: 'Jack',
age: 18
};
const g = gen.apply(user);
console.log(g.next());
console.log(g.next());
console.log(isGeneratorFunction(gen));
console.log(isGenerator(g));