对象方法扩展:

  1. //Object.is 比较两个值是否严格相等,与『===』行为基本一致(+0 与 NaN)但是在判断NaN方面不太一样; <br />** //Object.assign 对象合并1. 将源对象的所有可枚举属性,复制到目标对象;(多用于/配置信息)**<br />**//合并对象2. const person = {...per1,...per2,...per3,...per4}//(per分别为对象名)**<br /> //proto、setPrototypeOf、 setPrototypeOf 可以直接设置对象的原型;<br /> //Object.key()返回一个给定对象的所有可枚举属性的属性名 <br /> //Object.values()返回一个给定对象的所有可枚举属性值的数组; <br /> **//Object.entries()返回一个给定对象自身可遍历属性 [key,value] 的数组;(将对象转成二维数组,可以直接放入Map里,通过Map属性操作**)<br /> //**Object.fromEntries() 执行与 Object.entries互逆的操作。Object.fromEntries() 方法把键值对列表转换为一个对象。(列表二维数组并且内部数组以键值对的形式存放 **_**const **_**array= [[1,2],[3,4],[5,6]]) ** <br /> //Object.getOwnPropertyDescriptors()返回指定对象所有自身属性的描述对象(为新对象进行相同配置的克隆,);<br /> //rest对象应用:

javaScript遍历对象总结

1、使用Object.keys()遍历

返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
ES6-ES11各种数据类型的扩展用法 - 图1
var obj = {‘0’:’a’,’1’:’b’,’2’:’c’}; Object.keys(obj).forEach(function(key){ console.log(key,obj[key]); });
ES6-ES11各种数据类型的扩展用法 - 图2

ES6-ES11各种数据类型的扩展用法 - 图3

2、使用for..in..遍历

  1. 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).<br />![](https://cdn.nlark.com/yuque/0/2022/gif/22947697/1646113095765-5d328cac-a451-4c50-93f3-886b7eee0cf9.gif#clientId=ua6e857ab-5f33-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u130fe10a&margin=%5Bobject%20Object%5D&originHeight=20&originWidth=20&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u6f5db2cd-6c2b-48d7-adac-40428eb9d82&title=)<br />var obj = {'0':'a','1':'b','2':'c'}; for(var i in obj) { console.log(i,":",obj[i]); } <br />![](https://cdn.nlark.com/yuque/0/2022/gif/22947697/1646113095780-00bde004-950a-4e5e-b5cd-1fb46aeb5038.gif#clientId=ua6e857ab-5f33-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u331c6c38&margin=%5Bobject%20Object%5D&originHeight=20&originWidth=20&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ub5aec3c4-408f-4b78-9292-db879af384b&title=)

ES6-ES11各种数据类型的扩展用法 - 图4

3、使用Object.getOwnPropertyNames(obj)遍历 返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
ES6-ES11各种数据类型的扩展用法 - 图5
var obj = {‘0’:’a’,’1’:’b’,’2’:’c’}; Object.getOwnPropertyNames(obj).forEach(function(key){ console.log(key,obj[key]); });
ES6-ES11各种数据类型的扩展用法 - 图6

ES6-ES11各种数据类型的扩展用法 - 图7

4、使用Reflect.ownKeys(obj)遍历 返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
ES6-ES11各种数据类型的扩展用法 - 图8
var obj = {‘0’:’a’,’1’:’b’,’2’:’c’}; Reflect.ownKeys(obj).forEach(function(key){ console.log(key,obj[key]); });
ES6-ES11各种数据类型的扩展用法 - 图9

ES6-ES11各种数据类型的扩展用法 - 图10

数值扩展:

//Number.EPSILON:(可以用来精确 浮点数的运算)
Number.EPSILON 是 JavaScript 表示的最小精度;
EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16;
//二进制和八进制:
ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b 和 0o 表示;
//Number.isFinite()检测一个值是否为有限数
//Number.isNaN()检测一个数是否为NAN
//Number.parseInt Number.parseFloat字符串转数
//Number.isInteger 判断一个数是否为整数
//Math.trunc 将数字的小数部分抹掉
//Math.sign 判断一个数到底为正数 负数 还是零
//进行指数操作符 幂运算的简化写法,例如:2的10次方:210

字符串方法扩展:

  1. //trimStart()和 trimEnd()去掉字符串前后的空白字符

数组方法扩展:

set集合可以为数组去重,也可以用其中的has()方法查找数组中的元素
[…]扩展运算符 将数组转化成以逗号分隔的参数序列
作用:1.数组的拼接 2.数组的克隆 3.将伪数组转成真正的数组
//Array.includes 判断数组中是否包含某元素

//arr.flat()将多维数组转换成低维数组,返回一个新数组,对原数据没有影响。参数为数组的深度,将3维变成1维,深度为2。
image.png
//arr.flatMap()将arr.map()中返回的结果如果是数组,那么将map的二维数组变成一维数组。arr3.flatMap(items => [items*10])
image.png

正则扩展:

  1. //反向断言 /\d+(?=啦)/ 匹配啦字前面的数字 reg.exec(str)<br /> //正向断言 /(?<=么)\d+/ 匹配么字后面的数字 reg.exec(str)<br /> //扩展命名捕获分组 reg =/<a href="(?<url>.*)">(?<name>.*)<\/a>/ 拿到网址和网站名 (?<url>.*)给定别名<br />![2022-02-14_202958.png](https://cdn.nlark.com/yuque/0/2022/png/22947697/1644910843114-a924acb1-66f7-4777-a8ce-f3493641dd78.png#clientId=u993ccd42-deeb-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u1c283ec3&margin=%5Bobject%20Object%5D&name=2022-02-14_202958.png&originHeight=321&originWidth=1387&originalType=binary&ratio=1&rotation=0&showTitle=false&size=163383&status=done&style=none&taskId=u95bfdec3-c6a5-40c3-8795-9852a60801d&title=)<br />//dotAll模式:dot 元字符 . 除了换行符意外的任意单个字符(提取HTML数据时作用很明显)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22947697/1644929625105-5567d77f-38ed-4520-b4fc-9b86701ed7e3.png#clientId=u993ccd42-deeb-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=655&id=ud947e309&margin=%5Bobject%20Object%5D&name=image.png&originHeight=819&originWidth=1152&originalType=binary&ratio=1&rotation=0&showTitle=false&size=456243&status=done&style=none&taskId=u1479b5e3-a81f-4307-a9a5-a8073a530fd&title=&width=921.6)<br />//matchAll:可以对页面数据进行批量提取(本身实现了迭代器接口 可以用for of和扩展运算符)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22947697/1644938772231-d6d5098e-3ba9-450d-b3ee-df7a5369b323.png#clientId=u993ccd42-deeb-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=732&id=ud3e78c84&margin=%5Bobject%20Object%5D&name=image.png&originHeight=915&originWidth=1071&originalType=binary&ratio=1&rotation=0&showTitle=false&size=350992&status=done&style=none&taskId=u95850194-25e5-42aa-8f34-1abac5022b8&title=&width=856.8)

Symbol扩展:

Symbol.description会返回symbol类型的描述字符串
image.png