zoukankan      html  css  js  c++  java
  • ES6知识点整理之----Generator----其他

    1、如果一个对象的属性是 Generator 函数,可以简写成下面的形式。

    let obj = {
      * myGeneratorMethod() {
        ···
      }
    };

    2、Generator 函数总是返回一个遍历器,这个遍历器是 Generator 函数的实例,也继承了 Generator 函数的prototype对象上的方法。

    3、Generator 函数不能跟new命令一起用,会报错。

    3、Generator 函数返回一个正常的对象实例,既可以用next方法,又可以获得正常的this

    function* F() {
      this.a = 1;
      yield this.b = 2;
      yield this.c = 3;
    }
    var obj = {};
    
    //使用call方法绑定Generator函数内部的this
    var f = F.call(obj);
    
    f.next();  // Object {value: 2, done: false}
    f.next();  // Object {value: 3, done: false}
    f.next();  // Object {value: undefined, done: true}
    
    obj.a // 1
    obj.b // 2
    obj.c // 3

    4、将 执行的是遍历器对象f 和 生成的对象实例obj 统一

    function* F() {
      this.a = 1;
      yield this.b = 2;
      yield this.c = 3;
    }

    // 将空对象obj 换成 F.prototype
    var f = F.call(F.prototype); f.next(); // Object {value: 2, done: false} f.next(); // Object {value: 3, done: false} f.next(); // Object {value: undefined, done: true} f.a // 1 f.b // 2 f.c // 3

    5、将F改成构造函数,对它执行new 命令

    function* gen() {
      this.a = 1;
      yield this.b = 2;
      yield this.c = 3;
    }
    
    function F() {
      return gen.call(gen.prototype);
    }
    
    var f = new F();
    
    f.next();  // Object {value: 2, done: false}
    f.next();  // Object {value: 3, done: false}
    f.next();  // Object {value: undefined, done: true}
    
    f.a // 1
    f.b // 2
    f.c // 3

    6、Generator 与状态机。Generator 之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息

    var clock = function* () {
      while (true) {
        console.log('Tick!');
        yield;
        console.log('Tock!');
        yield;
      }
    };

    7、Generator 与协程(暂略)

    8、Generator 与上下文。(暂略)

    9、应用:

    • 异步操作的同步化表达
    • 控制流管理
    • 部署Iterator接口
    • 作为数据结构
  • 相关阅读:
    实验十四
    2
    解一元二次方程
    第一题
    输入四个人的年龄和姓名,排序后,按年龄,从小到大输出人员年龄及其姓名
    实验九
    实验8数组2 1.程序调试
    实验七4编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
    实验10 指针2
    作业4
  • 原文地址:https://www.cnblogs.com/adhehe/p/9681659.html
Copyright © 2011-2022 走看看