编辑代码

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);

// const _gen = gen.bind(user);
// const g = _gen();

console.log(g.next());
console.log(g.next());

console.log(isGeneratorFunction(gen));
console.log(isGenerator(g));