1.module
typeof class 结果是function,类的本质是函数
构造函数
constructor(){}实例化的时候 new关键字调用的就是构造函数
super()
调用父类的构造函数
extends继承父类的方法
static类的静态属性和方法
类的this指向的是他的实例(也就是new出来的对象)
导出 export
默认导出
function format(date){ return date.toLocaleString();}export default format;
普通导出
export function reverse(str){
return str.split('').reverse().join("");
}
导出变量
export const PRICE=500;
先定义,再导出
var name="三明治";
function say(){
console.log("我的东西价格是:"+PRICE);
}
export{
name,
say
}
导入 import
导入默认
import format from "./文件位置";
普通导入
import format,{reverse as t,PRICE,name,say} from "./utils/index.js";
as 别名,reverse要与源文件保持一致
默认导入与普通导入可以合并写入
导入所有
import * as utils from "./文件地址";
调用时通过utils调用
utils.say();
console.log(utils.name);
console.log(utils.PRICE);
console.log(utils.reverse("甜蜜蜜"));
console.log(utils.default(new Date()));
2.ES6新增数据类型
set 集合 不重复的数组
方法:add delete clear size has检测
map 图 键名是任意类型的对象
方法:set(key,value) get(key) delete size clear
symbol 符号 惟一的符号
weakSet 值都是引用类型的set
weakMap键都是引用类型
迭代对象
指可用for of进行遍历的对象,有数组、字符串、集合、图等
keys键的结果 values值的结果 enteries键与值的集合
3.同步与异步
同步:
按顺序从上至下阻塞式执行代码,这一行不执行完,不开始下一行;
console.log(1);
alert(2);
console.log(3);
异步:
先执行主线程代码,再执行其他线程(非阻塞式),实现异步有以下几种方式
回调函数
事件响应
promise承诺
订阅和发布模式
sync和await
4.promise
承诺有3个状态:pending准备 rejected失败resolved成功
实例
.then(res=>{}) 回调函数获取resolved返回的结果,返回一个新的promise实例
.catch(err=>{}) 获取rejected的原因
解决
异步操作
回调地狱
all 全部 所有的promise都resolve,才执行resolve
race 赛跑 (返回最先resolve结果)
5.async与await
async装饰的函数,返回的是一个promise函数
返回的结果是resolved的结果
await用来等待异步的resolve结果,只能出现在async装饰的函数内
6.生成器generation与迭代器
生成器就是在函数前面加*
生成器执行的结果是一个迭代器
迭代器通过next方法返回一个对象,对象的value是yield生成的结果,在生成器里面遇到yield就停止等待下一次next调用
可以通过for of来遍历迭代器 for(v of range(1,100)){console.log(v)}
String,Arry,Set,Map的迭代器arr[Symbol.iterator]()
7.Object.defineProperty
object.defineProperty(obj,props,{get(){//获取},set(v){//设置},...})
proxy代理对象
target目标对象
handle处理器
var proxy=new Proxy(target,handle)