目录

    ES6-11

    模块化

    • 将一个大的程序文件,拆分成许多个小的文件,然后将小文件组合起来

    • 优势:

      1. 防止命名冲突
      2. 代码复用
      3. 高维护性
    • ES6之前 模块化规范产品

      1. CommonJS => NodeJS、Browserify
      2. AMD => requireJS
      3. CMD => seaJS
    • ES6 模块化语法

      模块功能主要有两个命令构成:export 和 import。

      • export 命令用于规定模块的对外接口
      • import 命令用于输入其他模块提供的功能

      暴露方法(export):

      //-------分别暴露--------
      export let school = 'lyun'
      //-------统一暴露--------
      export {school ,---,---}
      //-------默认暴露--------
      export [name]{
          school : 'lyun',
          class : 'jike'
      }
      

      引入方法(import):

      <script type="module">
          //通用导入方式
          //引入另一个js文件中所有添加  export  的数据 作为 m1
          import * as m1 from "路径";
      	//解构赋值形式
      	import {school, class} from "路径";
      	import {school as university, calss} from "路径";
      	import {[name] as school}  from "路径";
      	//简便形式  针对默认暴露
      	import school from "路径";
      </script>
      
      //
       npx browserify dist/js/app.js -o dist/bundle.js
      //
      npx babel js -d dist/js --presets=babel-preset-env
      

    ES7

    • 新增方法

      1. 数组方法(includes)

        • includes 方法用来检测数组中是否包含某个元素,返回布尔类型值

          const arr1 = ['西游记','红楼梦','三国演义','水浒传'];
          console.log(arr1.includes('西游记'))//true
          console.log(arr1.includes('大话西游'))//false
          //ES5中为indexOf  存在返回索引值   不存在返回  -1
          
      2. 幂运算 **

        • console.log(2 ** 10);
          console.log(Math.pow(2, 10));
          

    ES8

    • 新增方法

      1. async 和 await
        • 结合使用可以让异步代码相同步代码一样
      2. async 函数
    • 对象方法拓展

      var arr1 = {
          name:'小新',
          cities:['北京','上海','深圳'],
          xueke:['前端','Java','大数据','运维']
      };
      //获取所有的键
      console.log(Object.keys(arr1));
      //获取所有的值
      console.log(Object.values(arr1));
      //entries
      console.log(Object.entries(arr1));//返回值:[['name','小新'],['cities',[..]]...]
      //entries  用于创建Map
      var m = new Map(Object.entries(arr1));
      
      //对象属性的描述对象
      console.log(Object.getOwnPropertyDescriptors(school));
      
      var ogj = Object.creat(null, {
          name :{
      		value:'xiaoxin',
              //属性特性
              writable:true,
              //是否可删除
              configurable:true,
              //是否可枚举
              enumerable:true
          }
      });
      //深度克隆,配置属性且配置属性特性
      

    ES9

    • rest参数

      function connect({host,port, ...user}){//...user及为rest
          ...
      }
      
      connect({
          host:'127....',
          port:'3306',
          username:'root',
          password:'root'
      })
          //...user将存放除host,port之外的参数
          
      //扩展运算符对Object的操作可进行对象的合并
      var obj1 = {
          name:'xiaoxin'
      };
      var obj2 = {
          age:'18'
      };
      var obj3 = {
          sex:'男'
      };
      var obj4 = {
          school:'lyun'
      };
      var zxm = {...obj1, ...obj2, ...obj3, ...obj4}
      //结果为
      zxm = {
          name:'xiaoxin',
          age:'18',
          sex:'男',
          school:'lyun'
      }
      
    • 正则扩展-命名捕获分组

      reg.exec()
      
    • 正则扩展-反向断言

      跟剧目标前后进行获取
      
    • 正则扩展-dotAll模式

       
      

    ES10

    • Object.formEntries

      //与ES8中的 Object.entries 作用相反
      //Object.formEntries 将二维数组  转化为对象
      //Object.entries 将对象 转化为二维数组