ES6阶段
1、模块
导出
导出默认:
-
function format(date){ }
-
exprot default format
-
export default function format(date){ }
导出:
export function reverse(){}
先声明再导出:
-
export const PRICE = 500;
-
var name="mumu",
-
function say(){
-
console.log("我的价格是:" PRICE)
-
}
-
export {name,say}
导入
<script type="modlue"></script>
导入默认:
-
import {reverse} from './相对路径'
-
//reverse要和源文件方法一致
导入别名:
import {reverse as r} from './相对路径'
默认和普通方法是一个文件:
import format,{reverse as r,PRISE} from './相对路径'
导入所有:
-
import * as utils from './相对路径'
-
utils.reverse()
-
默认导出方法访问
-
utils.default()
ES6新增数据类型
- set集合 不重复的数组
- add 添加
- delete删除
- clear清空
- size大小
- has检测
- [..new Set(arr)]去重
- map图 建名可以使任何类型的对象
- set(key,value)设置
- get(key)获取
- delete删除
- clear清空
- size大小
- symbol符号 唯一的符号(对象的键)
- weekSet 值是引用类型
- weekMap 键是引用类型
迭代类型
可以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承诺
-
var p = new Promise((resolve,reject)=>{
-
//异步操作
-
resolve(data);
-
reject(err);
-
})
有三个状态(状态变化不可逆):
- pendding
- resolved
- rejected
实例
.then(res=>{}) 回调函数获取resolved返回的结果 返回一个新的promise实例
.catch(err=>{}) 获取rejected的原因
解决
1.异步操作
2.回调地狱(层级过深)
all全部
所有promise都resolve,all才执行
race 赛跑
返回最想resolve结果
同步和异步
同步:是指按顺序从上至下阻塞式执行代码(上一行代码不执行完毕,下一行是不会执行的)
异步:是指先执行主线程的代码,再执行异步调用(非阻塞式)
实现异步的方式
- 回调函数
- 事件响应
- 订阅发布模式
- Promise
- sync 和 await
类
类的本质是函数
类的this指向的是它的实例(也就是new出来的对象)
构造函数
constructor(){}
实例化的时候 new关键字调用的就是构造函数
super()
调用父类的构造函数
extends
继承父类的方法
static
类的静态属性和方法
async与await
async装饰的函数,返回的是一个promise对象;返回的结果是resolved的结果
await用来等待异步的resolve结果 只能出现在async装饰的函数中
-
function doit(){
-
var m1=await say("你真好看",2000)
-
var m2=await say("像春天花一样",3000)
-
return m1 m2;
-
}
doit().then(res=>{}).catch(err=>{})
generator生成器
-
function *range(min,max){
-
for(var i=min,i<max;i ){
-
yield i;
-
}
-
}
生成器执行的结果是一个迭代器
迭代器通过next方法返回一个对象,对象的value是yield生成的结果 在生成器里面遇到yield就会停止等待下一次next调用
-
{value:1,done:false}
-
...
-
{value:undefined,done:true}
可以通过for来遍历迭代器
-
for(v of range(1,100)){
-
console.log(v)
-
}
String,Array,Set,Map的迭代器
arr[Symbol.iterator]()
Object.defineProperty
-
Object.defineProperty(obj,props,{
-
set(v){//设置},
-
get(){//获取},
-
configurable:true 是否能删除
-
enumerable:true, 是否可以枚举
-
value 默认值
-
writanle:true 是否可写
-
})
-
可以定义对象的某个属性
proxy代理对象
target目标对象
handle 处理器
-
get(target,property){
-
//拦截set
-
return target[property]
-
}
-
set(target,property,value){
-
//拦截set
-
}
生成代理对象proxy
var proxy =new Proxy(target,handle)
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhhcjiaj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22