ES6新增方法(扩展方法,扩展函数)(const,let,Symbol,Set,WeakSet,Map,WeakMap)

let命令

1.作用:声明变量

2.语法格式:let num = 1

3.与var的不同:1.不存在变量提升:先声明再使用

2.作用域:{}就是一个作用域,let声明的变量只在当前作用域下生效

3.暂时性死区:块其作用+先声明后使用

4.同一作用域内不允许重复声明

const命令

1.作用:声明常量

2.语法格式:const PI = 3.14 -- 建议常量名使用大写

3.特点:1.先声明再使用

2.不允许重复声明或赋值

3.常量必须在声明的同时赋值 -- 常量不允许重新赋值

4.锁zhan不锁堆

5.作用域

6.暂时性死区

扩展方法

1.查找字符串方法:includes(),startsWith(),endsWith() -- indexOf(),lastIndexOf()

2.填充字符串方法:padStart(),padEnd()

3.去除字符串空格方法:trimStart(),trimEnd() -- trim()

4.替换字符串方法:replaceAll() -- replace()

5.获取字符串字符方法:at() -- charAt()

6.重复字符串方法:repeat()

扩展函数

1.Array.from():将具备遍历器接口的对象转换为真数组

2.Array.of():将一组值转换为数组

3.copyWithin(target,start=0,end=arr.length):将数组从target开始使用从start开始到end-1的元素替换,然后返回数组

4.查找数组元素方法:find():返回数组中第一个符合条件的元素

findIndex():返回数组中第一个符合条件的元素索引

includes():返回是否包含某个元素的布尔值

5.fill(val,start=0,end=arr.length):使用val作为元素填充到数组的startend-1的位置 -- 填充元素如果是引用类型,则会指向同一个地址

6.返回遍历器对象用于遍历:keys():返回的键

values():返回的值

entries():返回的键值对

7.flat(n=1):拉平n层数组,可以使用Infinity实现拉平任意层数组

flatMap():将数组的所有都执行一个函数后拉平 -- 只能拉平一层

8.at(index):获取数组中的某一个元素 -- index可以为负数,表示从末尾开始取值

扩展方法

1.Object.is(val1,val2):比较两个值是否全等,行为基本与===一致

console.log(Object.is(0,-0));  //false
console.log(0 === -0);  //true
console.log(Object.is(NaN,NaN));  //true
console.log(NaN === NaN);  //false

2.Object.assign(target,source1...):将源对象的可枚举属性拷贝到目标对象中 -- 如果属性已存在,会被覆盖

3.Object.setPrototypeOf(obj,proto):给obj设置原型对象

4.Object.getPrototypeOf(obj):获取obj的原型对象

5.Object.values():获取对象自身可枚举属性值组成的数组

6.Object.entries():获取对象自身可枚举属性和值组成的数组

7.Object.fromEntries():将键值对数组转换为对象

一、Symbol

1.新的原始数据类型,表示独一无二的值

2.声明:

//1.声明不重复的symbol
let s = Symbol();  //不带描述的symbol
let s = Symbol("description");  //带描述的symbol
​
//2.声明可重复的symbol
let s = Symbol.for(key); //key会注册成全局的值,当再次声明时,会全局查找是否已经存在相同的key,如果存在就应用之前的值;不存在则重新生成

3.作用:给对象添加独一无二的属性 -- 对象的属性名:1.字符串 2.Symbol

4.获取Symbol属性:Object.getOwnPropertySymbols()

5.获取描述:s.description

6.获取Symbol声明时的keySymbol.keyFor()

二、Set和WeakSet

Set

1.定义:新的数据结构,类似数组,但是值是唯一的

2.声明:

1.声明一个空的set,然后追加数据
var s = new Set();
2.声明一个带数据的set
var s = new Set(arg);  //arg必须具备遍历器接口

3.实例属性:size:获取元素个数

4.实例方法:1.add():添加元素,并返回结构本身 -- 链式调用

2.delete():删除某个元素,返回布尔值

3.clear():清除所有成员,没有返回值

4.has():判断某个元素是否存在

5.遍历方法:1.keys(),values(),entries():通过for...of循环

2.forEach()

3.for...ofSet结构本身具备遍历器接口 -- 间接使用数组方法

6.应用:1.数组去重

2.字符串去重

WeakSet

1.类似Set,值只能是对象,对象都是弱引用(其他地方不再引用对象,则该对象从结构中消失)

2.声明:

//声明一个空的WeakSet
let s = new WeakSet();
​
//声明一个带有值的WeakSet  --  参数必须具备遍历器接口并且值是对象
let s = new WeakSet([[],[]...]);
let s = new WeakSet([{},{}...]);

3.方法:add(),delete(),has()

4.作用:用于存放临时对象

三、Map和WeakMap

Map

1.数据结构,类似Object,键可以是任意类型(对象的键只能是String)

注意:当键为对象时,保存的是对象的引用

2.声明:

1.声明一个空的Map
let m = new Map;
2.声明一个带有属性的Map
let m = new Map(arg);  //参数是一个具备遍历器接口并且值为双元素的数据 -- 参数是值为双元素的具备遍历器接口的数据

3.属性:size:获取成员个数

4.方法:set(key,val):设置成员并返回Map结构

get(key):获取key对应的值

has(key):返回键是否在当前Map

delete(key):删除某个键,返回布尔值

clear():清空Map

5.遍历:1.keys(),values(),entries():通过for...of遍历

2.forEach

3.for...of:本身具备遍历器接口

6.与其他结构数据转换

1.Map转数组:let arr = [...map]
2.数组转Map:let map = new Map([[k,v],[k2,v2]...])
3.Map转对象:遍历map,将map的键值依次添加到对象中
4.对象转Map:1.let map = new Map(Object.entries(obj));
            2.遍历对象,然后依次添加到map
5.Map转JSON:1.Map的键全为字符串:转成对象形式的json
            2.Map的键包含对象:转成键值双元素的数组
6.JSON转Map:1.JSON为对象形式:JSON->对象->Map
            2.JSON为数组形式:JSON->数组->Map

WeakMap

1.与Map类似,保存键值对的集合

2.区别:1.只接收对象作为键名 -- 除null以外

2.键名对象的引用为弱引用 -- 其他地方对键名对象的引用消失,那么WeakMap键对应的值也会消失

3.声明:

var wm = new WeakMap()
var wm = new WeakMap([
    [{x:1},1]
])

4.方法:set(),get(),has(),delete()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值