ES6核心内容

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

【最常用的ES6特性】

  let , const , class , extends , super , arrow function , template string , destructuring , default , rest arguments 

【let , const】

  这两个关键字的作用和var相似,都是用来声明变量的,但是略有不同

  【问题】

var a="string";
while(true){
    var a="world";
    console.log(a);
    break;
}
console.log(a);

  两次输出的结果都是 world ,这是因为ES5中只有全局作用域和函数作用域,没有局部作用域,在这里 while 中的a覆盖了外面的a的值。

  【解决】

  let为JS新增了块级作用域,let声明的变量,只在 let 命令所在的代码块中有效。

  const的作用是声明常量。

【class , extends , super】

  这三个特性涉及到对象,接近于传统语言的写法,引入了Class的概念。使得对对象的描述更接近于面向对象的编程方式,更容易理解。

class Animal{
    constructor(){
    this.type="animal";
    }
    says(say){
        console.log(this.type+" say "+say);
    }
}
let animal = new Animal();
animal.says("hello");  //animal say hello
class Dog extends Animal{
    constructor(){
    super();
    this.type = 'dog';
    }
}
let dog = new Dog();
dog.says(" wang ");    //dog say wang

  这里用类class定义了一个Animal类,constructor中使用this定义了当前的实例对象。connstructor中定义的属性和方法是自身的,外面定义的方法和属性是共有的。

Class之间能够通过extends实现继承,相较于ES5中的修改原型链要更方便和好理解。上边定义的Dog类,就继承了Animal类的所有属性和方法。

super关键字,指代父类的实例(this对象)。子类必须在constructor方法中调用super方法,否则,新建子类实例会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后进行加工。如果不调用super方法,子类就得不到this对象。

原文地址:https://www.cnblogs.com/controlms/p/7862662.html