React系列(三):ECMAScript6.0的使用(上)

随着google和firfox以及node6.0对ES6的支持,ES6语法的定稿使它越来越受到关注,尤其是react项目基本上都是用ES6来写的。本文主要就是对ES6基础语法做出解析,为后续的React知识点做好铺垫,主要内容如下:

let, const:块级作用域—声明变量

class, extends, super: 类,继承,指代父类

arrow functions:箭头函数

template string:字符串操作

destructuring:变量解构

1. let, const:块级作用域—声明变量

1.1 变量使用

ES5下的作用域:

变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。为了能够保留执行过程的值,所以使用闭包的形式:

避免内存泄漏,不建议使用闭包,所以ES6提出了块级作用域let,采用ES6的语法:

let属于块级作用域,不允许在代码块的外面使用申明的变量

if(1) {lets =0;}

console.log(s);

在同一代码块中不允许使用let重复定义同名变量(不同代码块中可以重复声明)

lets =0;lets =7;

console.log(s);

1.2 常量

关于常量的定义,ES6提出了const;

一旦使用const声明常量,就不允许对其更改值,如果修改,浏览器报错; 

const多数应用于引入第三方库时声明变量,用来避免重名的bug。

const   react =require("react");

2. class, extends, super: 类,继承,指代父类

面向对象的使用,ES6提出了class的写法,让对象的原型更具备形式。

首先用class定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。简单地说,constructor内定义的方法和属性是实例对象自己的,而constructor外定义的方法和属性则是所有实例对象可以共享(可继承)的,代码如下:

解析:

class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承要简单许多。上面定义了一个Infor类,该类通过extends关键字,继承了Project类的所有属性和方法。

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

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

3. arrow functions:箭头函数

ES5的函数:

ES6的函数:

箭头函数的应用,主要应用于解决this指向问题

setTimeOut的this指向window全局

ES5的处理有两种: 

1、预存this

2、借助bind(this)

ES6使用箭头函数实例:

解析:

使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this

4. template string:字符串模板

使用字符串拼接的时候,ES5是用一堆的”” +来连接文本与变量:

使用ES6的字符串模板(变量e、f 来源于上图):

5. destructuring:变量解构

5.1 结构赋值的使用:

ES5的对象赋值:

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

可以放过来书写:

5.2 解构赋值在箭头函数应用

解构赋值中箭头函数指向window。

总结

本文主要讲解了ES6语法中变量、常量、函数、类与继承等基础知识点,下节讲继续更加深入的剖析ES6的核心语法。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 11,289评论 8 25
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,195评论 0 5
  • [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...
    郭子web阅读 5,812评论 0 1
  • 师大夜市,熙熙攘攘的周六傍晚,一家牛肉面馆,半掩着门房,在众多热闹缤纷的招牌前,显得稍许凋零。 “老板,今天没有营...
    又是一个星期九阅读 3,097评论 0 2
  • 看过很多马克笔教程,一味的只是普通的步骤图,而作为绘画种类之一的马克笔,它的用法也是很重要的。DAY1就让我们来普...
    春春sang阅读 5,596评论 8 39

友情链接更多精彩内容