• ES6的新特性


    ECMAScript 6(简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,又称ECMAScript 2015。ES6就是ES2015。

    虽然目前并不是所有浏览器都能兼容ES6全部特性,没有被很好地支持,所以接下来的ES6代码将使用 Babel 进行编译。

    Babel 

    Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

    最常用的ES6特性

    let,const,class,extends,super,arrow functions,template string,destructruing,default,rest argumenmts

    1、块级作用域,let, const

    类似于var,用来声明变量,但在实际运用中他俩都有各自的特殊用途。

    const声明的是变量

    ES5只有全局作用域和函数作用域,没有块级作用域。let则实际上为JavaScript新增了块级作用域,用它所声明的变量,只在let命令所在的代码块内有效

    const声明的是常量:

    一旦声明,常量的值就不能改变。当我们尝试去改变用const声明的常量时,浏览器就会报错。

    const有一个很好的应用场景,就是当我们引用第三方库的时声明的变量,用const来声明可以避免未来不小心重命名而导致出现bug。

    2、class, extends, super

    这三个特性涉及了ES5中最令人头疼的的几个部分:原型、构造函数,继承...你还在为它们复杂难懂的语法而烦恼吗?你还在为指针到底指向哪里而纠结万分吗?

    引入了Class(类)的概念:

    ES6提供了更接近传统语言的写法,引入了Class。新的class写法让对象原型的写法更加清晰、更像面向对象编程的语法,也更加通俗易懂。

    先用class定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。

    简单地说,constructor内定义的方法和属性是实例对象自己的,而constructor外定义的方法和属性则是所有实例对象可以共享的。

    Class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。

    super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。

    这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。

    ES6的继承机制:

    实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。

    3、arrow function(箭头函数)(=>)

    没有construct方法,不能做构造器

    不存在原型

    不能改变this,在整个箭头函数生命周期this值保持不变

    不存在arguments对象

    不能有重复的命名参数,es5只有严格模式下才不允许

    4、template String(模板字符串)

    用反引号`来标识起始,用${}来引用变量。

    5、destructuring(解构)

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

    6、default(默认值参数), rest(任意参数)

    rest任意:除第一个参数外不知道要添加几个参数,用...表示。

    7、总结

    es5与es6的取舍

    es6 都没定案你学个卵,建议系统学习es5,了解es6。

    目前的话先看ES5更加实际一点,等到比较熟练了再学ES6:ECMAScript 6入门(阮一峰)

    参考文献:

      https://segmentfault.com/a/1190000006887425

     

  • 相关阅读:
    一个案例
    Python Qt 简介
    【第二】用QtDesigner设计第一个界面
    【第一节】QtDesigner安装
    【第十二节】PyQt5俄罗斯方块
    【第十一节】PyQt5自定义控件
    【第十节】PyQt5绘图
    【第九节】PyQt 拖拽
    【第八节】PyQt5控件(II)
    【第七节】PyQt5控件
  • 原文地址:https://www.cnblogs.com/cxying93/p/6120016.html
Copyright © 2020-2023  润新知