ES6笔记

 

课程和项目源码:https://github.com/joyful2/ES6_Learning
 

学习到的关键知识: es6,项目构建(gulp,babel

重在理解和运用!

 

1.Object.assign({t:1},{k:2})

2.默认参数

const func = (txt=joe)=>{}

3.字符串模板

4.更多特性

 

自动化: grunt-gulp--webpack

编译工具:babel,webpack

 

前端模板:html,ejs...

 

使用Express脚手架搭建后端项目:

 

命令行参数的识别和处理:Yargs

Verbose: 日志

 

2 项目构建的总结: 这部分属于中高级内容,这里也只是大概讲解了下,有机会再自行深入,这里的讲课侧重点和学习要求是:1.重点讲了gulp的使用(使用gulp时可参考)  2.构建全过程的思想的理解  3.babel的配置,讲了点基础,作为了解可以听。

 

Es6:

.变量声明: 

Let,const块级作用域: 作用域是:{}范围内

es6默认是采用严格模式

 

1.const 声明不可变常量(如果是对象可以修改,但其实本质上指针不变)

2.let声明变量

 

二。解构赋值

let metaData={
title:'abc',
test:[{
title:'test',
desc:'description'
}]
}
let {title:esTitle,test:[{title:cnTitle}]}=metaData;

 

三.字符串

includes,startdsWith,endsWith, str.repeat(2)str.padStart(2,x),str.padEnd(2,x),String.rawstr

{// 补白:用于时间,日期等,如:10:1---1010

 console.log("1".padStart(2, "0")); // 前补白 参数:(指定长度,达不到该长度时补充的字符串)

 console.log("1".padEnd(2, "0")); // 后补白}

 

{let user = {

 name: "list",

 info: "hello world"};

 // console.log(abc`i am ${user.name},${user.info}`);

 abc`i am ${user.name},${user.info}`;

 function abc(s, v1, v2) {

 // console.log(s, v1, v2);

 console.log("s", s);

 return s + v1 + v2;

 }

}

 

4.数值:

Number.isFinite(),isNaN(),isInteger(),isSafeInteger(),trunc(),sign(),cbrt()

 

5.数组


 Array.from,Array.of, Array.keys/values/entries

1.Array.of,Array.from的区别是什么?

2. for of

 

for...in循环的是对象的属性;所以便利数组得到的是索引而不是值;所以要遍历数组,可以采用下标循环。

        for...inArray的循环得到的是String而不是Number

2for...of循环:ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型;

                      具有iterable类型的集合可以通过for...of循环来遍历;

                      循环集合本身的元素

 

6.函数

rest参数

 如果有函数的依赖和嵌套,要用如下尾调用形式:

 function fx(x) {

 return tail(x);

 }

 

7、对象:

属性的简洁表示法:

let es6_method = {
hello() {
console.log("hello");
}
};

属性表达式: 常用于属性是变量的情况

let es6_obj = {
[a + "_1"]: "c"
};

 

 Object.assign是浅拷贝: 1.只拷贝地址 2.只拷贝自身属性,其继承中不会拷贝

 

Object.is

console.log(Object.is("abc", "abc"), "abc" === "abc");

 

8.Symbol

Symbol的概念和使用场景是什么?

 

9.Set,Map

Set: 去重

Map: key可以是任意数据类型,比如对象

 

10. map,set,array,obj常用api对比:

注意: 1.以后优先使用setmap,少用array,object. 2. 复杂结构用map,去重要用set.

 

11.Proxy,Reflect:

Proxy主要用于对对象的代理拦截(改写)

 

12. Class

 类的继承:extends

 继承传递参数:super(props)

getter,setter

 静态属性/方法:通过类调用,而非通过实例调用的方法

 

 

13. Promise: 主要解决异步回调嵌套问题

 

Promise.all([

Promise1,

 Promise2,

Promise3

]) 内部所有Promise执行完后才会执行下一步

Promise.race([

Promise1,

 Promise2,

Promise3

]) 内部有一个Promise执行完就马上执行下一步

 

 

14 Iteratorfor of

 Iterator(遍历器)的作用有三个:1是为各种数据结构,提供一个统一的、简便的访问接口;2是使得数据结构的成员能够按某种次序排列;3ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。

 ES6中,有些数据结构原生具备Iterator接口(比如数组),即不用任何处理,就可以被for...of循环遍历,有些就不行(比如对象)。原因在于,这些数据结构原生部署了Symbol.iterator属性(详见下文),另外一些数据结构没有。凡是部署了Symbol.iterator属性的数据结构,就称为部署了遍历器接口。调用这个接口,就会返回一个遍历器对象。

 ES6中,有三类数据结构原生具备Iterator接口:数组、某些类似数组的对象、SetMap结构。

 

参考:https://www.cnblogs.com/zczhangcui/p/6502836.html 

 

15. Generator

genrator是一种异步解决方案, 通过next,yield控制异步(返回Iterator),比Promise更高级。

generator返回的就是iterator,因此可以通过generator可以定义iterator

async await就是genrator函数的语法糖,实质上是一样的

不要使用全局变量:因为1.污染作用域 2.很容易被人修改

 

 16.Decorator(装饰器):  Decorator是一种修饰类的行为的函数:

1.Decorator是函数 2.是对类的修改 3.使用时babel需要transform-decorators-legacy插件

静态属性只能通过类本身访问,实例无法访问

第三方库修饰器的js库:core-decorators; npm install core-decorators 许多修饰器已实现,拿来直接用

 业务场景模拟: 使用Decorator装饰器提高代码可复用性和可维护性: 将埋点(监控)逻辑和业务逻辑解耦

let readonly = function(target, name, descriptor) {

 //1.target:要修改的类本身 2.name:属性名称 3.descriptor:描述对象

//descriptor.value获取原函数

descriptor.writable = false;

return descriptor;

};

 

posted on 2019-05-28 21:16  joyful2  阅读(114)  评论(0)    收藏  举报

导航