zoukankan      html  css  js  c++  java
  • ES6新特性

    列举:

    • 模块化
    • 箭头函数
    • 模板字符串
    • 延展操作符
    • 对象属性简写
    • Promise
    • Let与Const
    • Map和Set

    1、类

    //类的定义
    class Animal {
        //ES6中新型构造器
        constructor(name) {
            this.name = name;
        }
        //实例方法
        sayName() {
            console.log('My name is '+this.name);
        }
    }
    //类的继承
    class Programmer extends Animal {
        constructor(name) {
            //直接调用父类构造器进行初始化
            super(name);
        }
        program() {
            console.log("I'm coding...");
        }
    }
    //测试我们的类
    var animal=new Animal('dummy'),
    wayou=new Programmer('wayou');
    animal.sayName();//输出 ‘My name is dummy’
    wayou.sayName();//输出 ‘My name is wayou’
    wayou.program();//输出 ‘I'm coding...’

    2、模块化

      模块的功能主要由 export 和 import 组成。每一个模块都有自己单独的作用域,模块之间的相互调用关系是通过 export 来规定模块对外暴露的接口,通过import来引用其它模块提供的接口。同时还为模块创造了命名空间,防止函数的命名冲突。
    导出(export)

    ES6允许在一个模块中使用export来导出多个变量或函数。

    export var name = 'Rainbow'
    

      上面的模块通过 export 向外输出了一个变量。一个模块也可以同时往外面输出多个变量。

    var name = 'Rainbow';
    var age = '24';
    
    export {
      name,
      age
    };
    导入(import)

    定义好模块的输出以后就可以在另外一个模块通过import引用。

    import myModule from 'myModule';
    import { name ,age } from 'test';

    3、箭头函数

      =>不只是关键字function的简写,它还带来了其它好处。箭头函数与包围它的代码共享同一个 this,能帮你很好的解决this的指向问题。有经验的JavaScript开发者都熟悉诸如 var self = this;或 var that =this这种引用外围this的模式。但借助 =>,就不需要这种模式了。
    箭头函数的结构

      箭头函数的箭头=>之前是一个空括号、单个的参数名、或用括号括起的多个参数名,而箭头之后可以是一个表达式(作为函数的返回值),或者是用花括号括起的函数体(需要自行通过return来返回值,否则返回的是undefined)。

    () => {
        alert()
    }
    
    setTimeout(() => {
        // to do
    }, 500)
    

    4、模板字符串

    ES6支持 模板字符串,使得字符串的拼接更加的简洁、直观。

    平常:var str = ‘hello, '+ name + ', my name is ' + myName;

    let str = `hello, ${name}, my name is ${myName}`;
    

      在ES6中通过 ${}就可以完成字符串的拼接,只需要将变量放在大括号之中。

    5、对象属性简写

    1. 不使用ES6
      const name = 'Ming',
      age = '18',
      city = 'Shanghai';
      const student = {
        name: name,
        age: age,
        city: city
      };
      console.log(student);

      对象中必须包含属性和值,显得非常冗余。

    1. 使用ES6
      const name = 'Ming',
      age = '18',
      city = 'Shanghai';
      const student = {
        name,
        age,
        city
      };
      console.log(student);

    6、Promise对象

    Promise 是异步编程的一种解决方案,比传统的解决方案callback更加的优雅。它最早由社区提出和实现的,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。

      1、不使用ES6
        嵌套两个setTimeout回调函数:

    setTimeout(function() {
      console.log('Hello');
      setTimeout(function() {
        console.log('Hi')
      },
      1000)
    },
    1000);

      2、使用ES6

    var waitSecond = new Promise(function(resolve, reject) {
      setTimeout(resolve, 1000)
    });
    waitSecond.then(function() {
      console.log("Hello");
      return waitSecond
    }).then(function() {
      console.log("Hi")
    });

    7、支持let与const

      const与let都是块级作用域

    1. 使用var定义的变量为函数级作用域:
    {
      var a = 10
    }
    console.log(a);
    1. 使用let与const定义的变量为块级作用域
    {
      let a = 10
    }
    console.log(a); // 报错

    具体区别:参考  https://www.cnblogs.com/yjf713/p/12974535.html

    8、Map和Set
    Map
      Map解决的是Object的键值对中键只能是字符串的问题。

      Map是Es6提供的新的数据结构,是键值对的集合。Map的“键”不限于字符串。各种类型的值(包括对象)都可以当做键。

    Set

      Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化

      Set本身是一个构造函数,用来生成 Set 数据结构。

      Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化

    weakSet

      WeakSet 的成员只能是对象,而不能是其他类型的值。

      WeakSet 是一个构造函数,可以使用new命令,创建 WeakSet 数据结构。

    weakMap

      weakMap结构与Map结构类似,也是用于生成键值对的集合。

      weakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名

    可参考:https://es6.ruanyifeng.com/#docs/set-map

  • 相关阅读:
    awk中使用shell变量
    awk的getline命令
    awk的逻辑运算符
    python之re模块
    转载:ensemble计划和数据库
    正则表达式的符号
    awk之match函数
    bash脚本之读取数据
    samtools+bcftools 进行SNP calling
    win10 系统上运行tensorflow三层卷积的方式
  • 原文地址:https://www.cnblogs.com/yjf713/p/13378634.html
Copyright © 2011-2022 走看看