map 和 set 数据类型
set 只能对储基本数据类型的值保证必须是唯一的,有去重的功能,如果是引用数据类型则不会去重。
-
set类型转数组
-
Array.from
-
[...setData]
-
自带方法
-
get 获取
-
add 添加
-
delete 删除
-
clear 清空
-
has 查询
-
values 序列化值
-
forEach 遍历
-
使用场景最多的时候
-
数组去重
map
-
语法:
new Map([['key',value],[key, value]])
-
自带方法和set一样
Symbol 唯一的数据类型,即便使用它初始值相同,返回的值也是不同的
proxy 代理方法,它可以监听一切数据类型的值
reflect 代理方法,比proxy要弱一点
promise 异步解决方法
-
目的是把异步操作变成了同步执行
-
解决了回调地狱
特点
-
如果接口请求成功调用resolve,否则调用reject
-
状态一旦使用,则不能修改
-
promise一旦执行不能终止
同源策略
http://baidu.com:8080
-
http:// 协议
-
baidu.com 域名
-
8080 http 80默认端口,https 443默认端口
-
协议、域名、端口必须一致叫同源,有一个不一致叫跨域
-
同源策略是一种保护机制,保证网站内容不容易被轻易窃取
module 模块化语法
-
es6使用import 导入模块
-
es6使用export 导出模块
-
解释:模块化就是让每一个js文件作为独立的模块使用,它拥有自己的独立的作用域,不回污染全局环境.
-
在原生的html中的script标签上使用type=‘module’即可以使当前script标签变成模块化.
使用方法
-
每个模块只能有一个export default 叫默认导出模块,上游导入的时候,直接使用变量名接收.
// 导出 export default {} // 导入 import name from "./moduleName"
-
可以使用export直接导出功能,一个模块可以无限次使用export直接导出,上游导入的时候需要使用解构的方式获取
// 导出 export let name = '123' export const obj = {} export let arr = [] // 导入 import { name, obj, arr } from "./moduleName"
别名设置
如果导入的模块名称和当前作用域的变量名有冲突,我们可以给导入的模块取一个别名,避免这种命名冲突问题
-
as
import name as newName from "./xx"
orimport { name as newName } from "./xxx"
async和await 是promise的语法糖
定义:用于函数,把异步函数变成了同步执行,比promise更加的直观