文章目录
前言
提示:ECMAScript6新的javascript标准:
提示:以下是本篇文章正文内容,下面案例可供参考
一、变量声明
1.var
2.let
01 let与var基本一致,用作变量声明
02 let 在一对括号{}中形成局部作用域
03 let声明的变量不会变量提升
04 let不能重复声明变量(同一作用域)
3.const
01 与let一致(局部,不提升,不能重复声明)
02 声明必须赋值
03 赋值不能修改(值类型)
04 建议大写
二.数组的解构
01 数组解构:把数组解析为单个变量
02 通过逗号跳过
03 ...接收剩余值
04 可以给默认值
05 快速交换变量
三.module模块
1.导出
i.导出默认
function format(date){}
export defaut format
export default function format(date){}
ii.导出
export function reverse(){}
iii.导出变量
export const PRICE = 500;
iv.先声明再导出
var name = “mumu”;
function say(){
console.log("我的价格是"+PRICE)
}
export {name,say}
2.导入
1.导入
<script type="module">
2.导入默认
import format from './相对路径'
// format可以和导出的时候不一致
3.导入
import {reverse} from './相对路径'
// reverse要和源文件方法一致
4.导入别名
impot {reverse as r} rom ’./相对路径‘
5. 默认和普通方法是一个文件
import format ,{reverse as r,PRICE,name,say} from ’./相对路径‘
6.导入所有
import * as utitls from ’文件地址‘
utils.reverse()
7.默认导出方法访问
utils.default();
四.类
1.typeof class
结果是 Function
类的本质是函数
2.class Block{
}
3.构造函数
constructor(){}
实例化的时候 new关键字调用的就是构造函数
4.super()
调用父类的构造函数
5.extends
继承父类的方法
6.static 类的静态属性和方法
类的this指向的是它的实例(也就是new出来的对象)
五.新增数据类型
1.set 不重复的数组
add 添加
delete删除
clear清空
size大小
has检测
[...new Set(arr)]
2.map任意键的对象
set(key,value) 设置
get(key) 获取
delete删除
size大小
clear清空
3.weakSet
值都是引用类型的set
4.weakMap
键都是引用类型
5.symbol唯一符合
(对象的键)
六.迭代类型
1.可以for of遍历的对象都是可迭代对象
String字符串
Array数组
Set 集合
Map 图
for(let v of myset)
for(let k of myArr.keys())
for(let v of myArr.values())
for(let [k,v] of myArr.entries())
七.Promise承诺
1.
var p = new Promise((resolve,reject)=>{
// 异步操作
resolve(data)
reject(err)
})
2.有三个状态状态变化就不可逆
pendding
resolved
rejected
3.实例p
1. .then(res=>{})
回调函数获取resolved 返回的结果
返回一个新的promise实例
2. .catch(err=>{})
获取rejected的原因
4.解决
1. 异步操作
2. 回调地狱(层级过深)
5.all全部
所有promsie都resolve,all才执行resolve
6.race 赛跑
(返回最先resolve结果)
拿到最到的resolve结果
八.同步和异步
1.同步是按顺序从上至下阻塞式执行代码
(上一行代码不执行完毕,下行是不会执行)
2.异步是先执行主线程的代码,再执行其他线程(非阻塞式)
3.实现异步的方式:
回调函数
事件响应
订阅发布模式
Promise
sync 和await
九.async与await
1.async装饰的函数,返回的是一个promise对象
返回的结果是resolved 的结果
2.await 用来等待异步的resolve结果 只能出现在async装饰的 函数中
async function doit(){
var m1 = await say("你真好看",2000)
var m2 = await say("像春天花一样",3000)
return m1+m2;
}
doit()
.then(res=>{})
.catch(err=>{})
十.generator生成器
1.就是在函数前面添加个 *
function *range(min,max){
for(var i=min,i<max;i++){
yield i;
}
}
2.生成器执行的结果是 一个迭代器
3.
var iter = range(1,10)
4.
迭代器通过next方法返回一个对象,对象的value是 yield生成的结果 在生成器里面 遇到yield就停止等待下一次next调用
5.
{value:1,done:false}
....
{value:undefined,done:true}
6.可以通过for 来遍历迭代器
for(v of range(1,100)){
console.log(v)
}
7.String,Array,Set,Map的迭代器
arr[Symbol.iterator]()
十一.Object.defineProperty
Object.defineProperty(obj,props,{
set(v){ //设置},
get(){//获取},
})
//可以定义对象的某个属性
# 十二.proxy代理对象
1.target目标对象
2.handle 处理器
```javascript
set(target,property,value){
//拦截set
}
get(target,property){
// 拦截set
return target[property]
}
var proxy = new Proxy(target,handel)