尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

一、再谈symbol
1.使用keyfor获得symbol.for创建的symbol的描述
let test = Symbol.for(“我是描述”)
console.log(Symbol.keyFor(test))
2.获取symbol创建的描述
let test = Symbol(“我是描述”)
console.log(test.description);
3.symbol不能使用for…in和for…of来遍历读取

4.symbol用来作为属性具有唯一性
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)
5.symbol的属性
-Object.getOwnPropertySymbols()可以获取对象中的所有symbol属性
-for(const key of Object.getOwnPropertySymbols(obj)){
console.log(key)
}
-使用Reflect.ownKeys来获取对象中的所有属性,for(const key of Reflect.ownKeys(game)){
console.log(key)
}
6.总结
-symbol总的来说是作为对象的属性,来扩展对象的属性和功能。

二、迭代器(iterator)
1.定义
-迭代器是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口,就可以完成遍历操作
2.原生具备iterator接口的数据(可用for of遍历的有)
-Array、Arguments、Set、Map、String、TypedArray、NodeList
3.工作原理
-创建一个指针对象,指向当前数据结构的起始位置
-第一次调用对象的next方法,指针自动指向数据结构的第一个成员
-接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
-每调用next方法返回一个包含value和done属性的对象
4.自定义一个迭代器用来使用for…of遍历对象
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

三、生成器
1.定义
-生成器本身是一个特殊的函数,它是ES6提供的一种异步编程的解决方案,语法与传统函数完全不同
2.写法
function * gen(){
yield
yield
yield
}
-yield可以看成函数代码的分隔符, 生成器的next方法执行。
3.生成器的异步应用
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

四、Promise
1.定义
-Promise是ES6引入的编程异步的新的解决方案,语法上Promise是一个构造函数
-用来封装异步操作并可以获取其成功或失败的结果。
2.语法
-const p = new Promise((resolve,reject)=>{
异步操作 ,成功则resolve ,失败则reject
}).then( (value) = > {
}).catch((err) => { })
3.promise的then方法
-调用then方法,then方法的返回结果是一个Promise对象,对象的状态由回调函数的执行结果决定,如果回调函数的执行结果是一个非promise对象,那么返回结果的状态是成功,返回值是成功的值。如果回调函数的 执行结果是一个Promise对象,那么返回结果的状态和值,会和回调函数的执行结果状态和值一致。

五、Set(集合)
1.定义
-ES6提供了新的数据结构Set(集合),它类似于数组,但成员的值都是唯一的。集合实现了iterator接口,所以可以用扩展运算符和for…of进行遍历。
2.集合的属性和方法
-size:返回集合的元素个数
-add:增加一个新元素,返回当前集合
-delete:删除元素,返回boolean值
-has 检测集合中是否包含某个元素,返回boolean值
3.Set的一些应用
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

六、Map
1.定义
-ES6提供了Map数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。Map也实现了iterator接口,所以可以使用扩展运算符和for…of进行遍历。
2.属性和方法
-size:返回Map的元素个数
-set:增加一个新元素,返回当前Map
-get:返回键名对象的键值
-has:检查Map中是否包含某个元素,返回Boolean值
-clear:清空集合,返回undefined

7.Class类
1.定义
-ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的巨大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰,更像面向对象编程的语法而已。
2.class构造函数的写法
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)
3.静态属性
-在函数对象中,用static声明的对象和方法,不属于实例对象。只有通过函数对象原型声明的属性和方法,才能够在实例对象中调用

4.构造函数的继承
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

5.类的继承
-主要用到extends关键字和super关键字
尚硅谷Web前端ES6教程,涵盖ES6-ES11(p16-p48)

八、ES6数值扩展
1.Number.EPSION
-Number.EPSION是JavaScript表示的最小精度,如果两个数的差小于这个值,会认为两个数相等
2.二进制和八进制
-二进制 0b开头 let b=0b1010;
-八进制 0o开头 let o =0o1010;
-十进制 let d =100;
-十六进制 let x=0xff
3.Number.isFinite(检测一个数值是否是有限数)
4.Number.isNaN (检测一个数值是否为NaN)
5.Number.parseInt 和 Number.parseFloat
6.Number.isInteger(判断一个数是否为整数)
7.Math.trunc(将数字的小数部分抹去)
8.Math.sign(判断一个数到底为正数、负数还是零)

九、对象方法的扩展
1.Object.is 判断两个值是否完全相等
-console.log(Object.is(NaN,NaN)); //true
-console.log(NaN===NaN)//false
2.Object.assign
-Object.assign(reg1,reg2),第二个参数会合并到第一个参数中,如果有相同的属性,则会覆盖掉。
3.Object.setPrototypeOf
-设置对象原型

十、ES7的一些新特性
1.数组的includes方法
-可以直接用Array.includes()方法来判断数组中是否有某个元素
-以前的indexOf方法返回值是一个数字 ,而includes方法返回值是布尔值

2.【**】运算符
-可以直接用这个运算符来计算次幂

上一篇:输入npm install 报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.13.1 postinstall:


下一篇:C语言学习笔记—P16(结构体+图解+题例)