ES6学习

(一)、let和const

let 关键字 定义变量
1.必须先定义再使用
2.不允许变量重名
3.块级作用域{} 使用let关键字不会污染全局变量
4.没有变量提升
5.不与顶层对象挂钩(无法挂在window上)

const 关键字 定义常量 无法改变
1.不能重复定义
2.块级作用域
3.声明不提升
4.不与顶层对象挂钩
5.fresze()方法:冻结对象内部一级属性

(二)、变量解构赋值

快速的从对象和数组中获取里面的成员

var arr=["ada","dada","wras"]
Let [x,y,z]=arr
console.log(x,y,z)

>便捷交换两个值
var a=10
var b=20
var[b,a]=[a,b]
console.log(a,b)

多维度数组,便捷获取数组的值
var arr2=[1,2,[3,4,[5]]]
var [a,b,[c,v,[r]]]=arr2
console.log(r)

获取对象的值 实现快捷获取
Let {name,age,location}=obj
doucment.write(name)
若重名则添加:一个新名字,值会被赋到新名字里


复杂对象获取
var obj2={
    name:"123",
    age:100,
    location:{
        province:"yuq"
        city:"weew"
    },
    hobby:[11,2,3]
}

var {
    name,
    age,
    location:{
        province,
        city,
    },
    hobby:[a,b,c]
}=obj2

(三)、模板字符串

``可以支持直接换行
${}将里面的内容看作变量 里面还可以添加表达式

(四)、字符串扩展

在这里插入图片描述
includes(“”) 判断在不在字符串中
startsWith 判断是不是在开头位置
endsWith 判断是不是在结尾
第二个参数:从第几个索引往后查找

repeat (n)重复n次字符串 0的话是空字符串

(五)、数值扩展

在这里插入图片描述

在这里插入图片描述

支持二、八进制写法

Number.isFinite 判断是否有限
非数值一律返回false

Number.isNaN 判断是不是NaN
非NaN一律返回false

Number.isInteger 判断是不是整数
100.0也是整数

Number.EPSILON 极小常量

Math.trunc 抹掉小数部分

Math.sign 判断一个数是正数、负数还是0
对于非数值,会转化成数值

这些都是局部的方法,非全局

(六)、数组扩展

…数组展开运算符

直接展开两个数组可以实现合并效果

let myarr=[1,2,3,4,5]
let [a,b,…c]=myarr
在解构赋值中必须放在最后用

Array.from
转换成数组

Array.of 重新生成一个数组
弥补可以直接构建唯一元素的数组
let arr=Array.of(2)

find(funtion(){}) 寻找第一个符合条件的元素

findIndex() 寻找索引值

findLast () 从后往前找

findLastIndex() 从后往前找

fill 快速填充内容,也可以替换

flat() 扁平化处理(将多维数组变一维)
flatMap(funtion(){})

(七)、对象扩展

对象简写:
k值和后面变量一样可以省略一个

对象属性 表达式

[name] 可以在中括号写变量和表达式

…扩展运算符
与数组用法相同

Object.is() 判断两个值是不是相等
可以判断两个NaN
可以判断+0和-0不相等

(八)、函数扩展

箭头函数

例:
var test2=()=>{
    console.log(2222)
}

特点
1.()可以省略 只有一个形参可以省略
2.{}可以省略,只有一句代码 或者只有返回值的时候 返回对象时,可以省略但要加小括号
3.无法new 没有arguments 这个可以在没有形参时,拿到传进来的参数,是一个伪数组形式
4.箭头函数的this是父级作用域的
函数的默认参数,先定义形参的值

函数参数默认值
function ajax(url,method=“get”){
}

rest参数 剩余参数

function test(){
}

name属性 test.name可以拿到函数名字

(九)、Symbol

在这里插入图片描述
let s1=Symbol() 生成了一个symbol类型数据
每一个都是独一无二

不能进行运算

显示调用toString
隐式转换boolean

不覆盖给对象赋值
let name=Symbol()
let obj={
[name]:“kerwin”,
}

无法用for in遍历
需要使用Object.getOwnPropertySymbols()

ownKeys普通属性和symbol属性都能获取

作为常量
const VIDEO=Symbol()

(十)、lterator

在这里插入图片描述

在这里插入图片描述
for(let i of arr){
consle.log(i)
}
i获取到的是元素内容

iter.next()连续调用得到内容

添加接口就可以实现for of的遍历

(十一)、set结构

在这里插入图片描述
可用于数组去重
在这里插入图片描述
size方法:set的长度
add方法:添加
has方法:判断有没有某个值
delete方法:删除

键名就是键值
entries配合for of可以遍历索引和内容

复杂数组过滤:
在这里插入图片描述

(十二)、map结构

在这里插入图片描述
里面放二维数组:键名,键值
let m1=new Map([
[“name”,“kerwin”]
])

forEach方法
m1.forEach((item,index)=>{
console.log(item,index)
})

(十二)、proxy代理

在这里插入图片描述
es5拦截方法:
在这里插入图片描述
基本用法:

let proxy=new Proxy(obj,{
	get(target,key){
},
	set(target,key,value){
}
})

target就是obj

has()方法可以判断有没有这个值

可以拦截map类型数据
在这里插入图片描述

(十三)、Reflect

在这里插入图片描述
在这里插入图片描述
查询属性
console.log(“name” in obj) 旧写法
console.log(Reflect.has(obj,‘name’)) 新写法

删除属性
delete obj.name 旧写法
Reflect.deleteProperty(obj,“name”) 新写法

基础用法
Reflect.set(obj,“age”,100)
Reflect.get(obj,“name”)

配合proxy:在这里插入图片描述

(十四)、promise

在这里插入图片描述
Promise的基础用法
是构造函数
var q = new Promise(funtion(resolve,reject){
里面添加异步
resolve()执行第一个
reject()执行第二个
})
q是promise的对象

pending 执行中
fulfilled 兑现承诺状态
reject 决绝承诺状态

q.then(funtion(){
兑现承诺,函数执行
}).catch(funtion(){
拒绝承诺,函数执行
})

.then(res=>{
return pajax解决回调地狱
})

在这里插入图片描述

Promise.all 所有结束后再执行
Promise.race 谁比较快显示谁

(十五)、Generator函数

在这里插入图片描述
流程调度

yield可以暂停函数
for of 可以遍历状态既 yield 后添加的内容
但无法遍历出return的值

第一个next传参无意义

手动驱动:
在这里插入图片描述

自动版本:
在这里插入图片描述

(十六)、class语法

在这里插入图片描述
静态写法:使用static
在这里插入图片描述

class的继承:利用super方法继承父类
在这里插入图片描述
方法的继承
在这里插入图片描述

(十七)、module模块化在这里插入图片描述

1.私密不漏
2.重名不怕
3.依赖不乱
4.异步加载

导出
export{}将想要暴露的函数写在里面 或者在函数前添加export
使用格式:在script的标签里写type=“module”
导入
import{}from’./module/A.js’
import * as obj1 from ‘./1.js’ 全部导入

用as重名名同名函数再进行调用
test as testa

依赖使用时,直接用import进行导入
export default默认导出 直接用import导入

使用defer(渲染完后执行)和async可以实现异步

<script defer></script>

(十八)、node.js模块化

在这里插入图片描述
module.exports ={
A1,
A2
} 导出
const A1=require(“./1.js”) 导入

exports.B1=B1 导出

改成支持es6规范,改完后不支持原来的规范
终端输入npm init 生成package.json 文件
在里面加上"type":“module”
第二种:后缀改成.mjs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值