ES6新特性学习提要笔记

本文详细介绍了ES6的诸多新特性,包括let和const的块级作用域、模板字符串、剩余参数与扩展运算符、箭头函数、解构赋值、对象与数组的扩展、Symbol、Set与Map、迭代器、生成器、Promise、异步操作、class与继承,以及模块化。这些特性对于理解和使用Vue框架至关重要,同时也深入影响了JavaScript的编程方式。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

hippy支持vue框架,而学习vue相关的内容,需要es6的知识。
以下是对es6新特性学习的提要笔记。

1.let,cosnt

1.没有变量提升
2.块作用域
3.不可重复声明

2.模板字符串

用反引号包裹,内部引用变量可以用${变量名}

3.剩余参数(剩余运算符):

…keys,keys就成了一个剩余参数的数组,合成参数为一个数组

4.扩展运算符:

分割数组为分离参数

5.箭头函数

箭头函数的括号,只有一句return可以不加大括号,如果返回对象(对象由大括号表示),外部再加一个括号表示返回的是一个整体(多变量对象)。
箭头函数没有内部this指向,会按照作用域链去查找。
箭头函数没有作用域!
注意事项:
1.内部没有arguments变量
2.不能通过new来实例化,箭头函数不是一个对象,可以看做一个表达式/函数的语法糖

6.解构赋值

是赋值运算符的扩展,针对数组和对象来进行操作,代码书写简洁易读。
完全解构/不完全解构。
可用剩余运算符来解构。
有默认值的解构。
嵌套解构。

7.扩展对象功能

可以简单地声明对象里面的变量及函数。
简易声明键值对:键值一样时只输入键/值即代表键值对。
对象的is方法比较两个值是否严格相等,assign方法把对象内变量合并到目标对象中并返回(浅copy)。

8.Symbol

原始数据类型,表示独一无二的值(内存地址不同)。
最大用途:声明对象的私有变量,用中括号取值。
然并卵,实战中很少用。
Object的一个Own…方法和Reflect的ownKeys方法能获取Symbol声明的对象的属性名,Object.key方法获得不到,获得的是一个空数组。意味着有些方法取不到Symbol声明的属性名,实用性可能不是很大。

9.Set

集合:!无重复值!的有序列表。
Set转数组,用扩展运算符分割成数组作为数组的参数。
Arr = […set]
Set中对象的引用无法被释放(new Set()无法释放)。

/*了解一下
let set = new WeakSet() set.add(obj)可以释放obj。
但是WeakSet:
不能传入非对象参数
不能迭代
没有foreach等方法
没有size属性
*/

10.Map

键值对的有序列表,键和值是任意类型。
在这里插入图片描述

11.数组扩展

数组Array的方法:
Array.form():
将伪数组转换为真正的数组([扩展运算符]也是一种转换为真正数组的方式)。
Form方法还接收第二个参数,用来对每个元素进行处理。
在这里插入图片描述

//lis是一个NodeList,这里直接log(通过扩展运算符转换为数组),最后通过from转换并对每一个元素提取他的textContent。

Array.of():
将全部参数(一组任意数据类型)转换成数组。
在这里插入图片描述

Array.Copywithin():
数组内部指定位置的元素复制到其他位置,然后返回当前数组。
在这里插入图片描述

Array.find():
找出第一个符合条件的数组成员。
在这里插入图片描述

Array.findIndex():
找出第一个符合条件的数组成员的索引。

entries()、keys(),values()返回遍历器,可以用for…of循环进行遍历取值
遍历
在这里插入图片描述

includes()返回一个布尔值,直接用于判断数组是否包含includes方法的参数的值
在这里插入图片描述

12.迭代器Iterator

在这里插入图片描述

13.生成器Generator

为异步编程提供了方案
在这里插入图片描述

调用generator函数返回一个遍历器,实际上调用func()并没有进入到func()内部,调用遍历器的next方法才会执行到一个yield及此yield之前的代码。
在这里插入图片描述

相当于generator函数是分段执行的,yield是暂停执行,next是恢复执行。

Generator传值:(这里比较难懂,第二个next的20传给了x…,最后一个next恢复return的返回值)
在这里插入图片描述
Generator使用场景:
为不具备Iterator接口的对象提供了遍历操作(相当于提供了一个Iterator接口)
在这里插入图片描述
在这里插入图片描述

最大作用:异步编程
略,可见b站教学视频
https://www.bilibili.com/video/BV1ay4y1r78B?p=16

14.Promise

ES6中提供了三种异步编程方式,promise是其中一种(还有generator,async与await的组合)
略,可见
https://www.bilibili.com/video/BV1ay4y1r78B?p=17

15.async

异步操作更加方便,略
https://www.bilibili.com/video/BV1ay4y1r78B?p=20

16.class类

前言:
虽然es6增加了class关键字,但是JavaScript中还是没有类的概念!依然是基于面向对象,而不是真正的面向对象,基于原型链来模型实现class,机理和普通函数定义的类是一样的

ES5中对“类”的写法可能会引起其他面向对象语言开发者的疑惑。
下图(ES5)中,大写开头字母的函数是构造器。
然后在Person的原型中增加方法属性。
/(?Prototype是指构造出来的对象的可用的所有对象(可以理解为类本身),可以向prototype增加函数以给“类”的对象增加方法属性。__proto__指向构造出这个对象的函数的prototype?)/
在这里插入图片描述

ES6中增加class关键字
在这里插入图片描述

在Person的原型Prototype中,有constructor()、sayName()、sayAge()、proto
P1的__proto__指向Person的Prototype。
另一种写法(向类中一次性加入所有函数):
在这里插入图片描述

(assign函数可见7.,把对象内变量(两个say函数)复制到目标对象(第一个参数)中)。

17.类的继承

ES5继承:
在这里插入图片描述
在这里插入图片描述

ES6类继承:
Constructor中可以使用super(…)调用父类构造函数。
Super是父类的prototype。
在这里插入图片描述

其他和java继承知识有类似之处。也支持重写等。

18.模块化

Js两种规范:
CommonJS和AMD。
前者的一个实现是NodeJS,可以写服务端,后者应用在浏览器。
ES5之前模块化可以通过src来导入,是同步的。

ES6模块功能主要有两个命令:export和import。
Export:规定模块的对外接口
Import:输入其他模块提供的功能
在这里插入图片描述

//浏览器中import引入需要加上type=’module’,{}那里是类似于解构赋值。

Export单独变量/统一export
Export default只能有一次。Import时可以把default的改名。

到此ES6的主要代码学习就结束了,下一步可以立即开始学习VueNodeJS

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值