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声明变量
二。解构赋值
三.字符串
includes,startdsWith,endsWith, str.repeat(2),str.padStart(2,’x’),str.padEnd(2,’x’),String.raw(str)
{// 补白:用于时间,日期等,如:10:1---》10:10
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...in对Array的循环得到的是String而不是Number。
2、for...of循环:ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型;
具有iterable类型的集合可以通过for...of循环来遍历;
只循环集合本身的元素。
6.函数
rest参数
如果有函数的依赖和嵌套,要用如下尾调用形式:
function fx(x) {
return tail(x);
}
7、对象:
属性的简洁表示法:
属性表达式: 常用于属性是变量的情况
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.以后优先使用set和map,少用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 Iterator和for of:
Iterator(遍历器)的作用有三个:1是为各种数据结构,提供一个统一的、简便的访问接口;2是使得数据结构的成员能够按某种次序排列;3是ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。
在ES6中,有些数据结构原生具备Iterator接口(比如数组),即不用任何处理,就可以被for...of循环遍历,有些就不行(比如对象)。原因在于,这些数据结构原生部署了Symbol.iterator属性(详见下文),另外一些数据结构没有。凡是部署了Symbol.iterator属性的数据结构,就称为部署了遍历器接口。调用这个接口,就会返回一个遍历器对象。
在ES6中,有三类数据结构原生具备Iterator接口:数组、某些类似数组的对象、Set和Map结构。
参考: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;
};
浙公网安备 33010602011771号