异步async/await

async/await是Promise的升级版,为了解决异步调用的问题。
如果async函数显示返回的不是Promise,会自动修饰成Promise对象。

  1. async function asyncFn(){
  2. return "hello world!"
  3. }
  4. console.log(asnycFn() instanceof Promise) // true
  5. //以上定义的函数等同于
  6. async function asyncFn(){
  7. return Promise.resolve("hello world!")
  8. }

异步操作集合

For await of

Object对象遍历

keys

当使用for of 变量对象时,会提示 TypeError: obj is not iterable

  1. var obj = { 'France': 'Paris', 'England': 'London' };
  2. for (let p of obj) { // TypeError: obj is not iterable
  3. // …
  4. }

那么就可以使用Object.keys进行遍历,keys只是获取对象的key,values可以遍历出对象的值

  1. var obj = { 'France': 'Paris', 'England': 'London' };
  2. // Iterate over the property names:
  3. console.log(Object.keys(obj));
  4. // ["France", "England"]

values

  1. var obj = { 'France': 'Paris', 'England': 'London' };
  2. // Iterate over the property names:
  3. console.log(Object.values(obj)); //["Paris", "London"]

entries

  1. var obj = { 'France': 'Paris', 'England': 'London' };
  2. // Iterate over the property names:
  3. console.log(Object.entries(obj)); //[["France","Paris"],["England", "London"]]

getOwnPropertyDescriptor

获取对象的属性描述符,即enumerable,writable,configurable,value

  1. var obj = { 'France': 'Paris', 'England': 'London' };
  2. Object.defineProperty(obj, "England", {
  3. enumerable: false
  4. })
  5. console.log(Object.keys(obj)); //["France"]
  6. console.log(Object.getOwnPropertyDescriptors(obj));
  7. //England属性不可枚举,所以keys取不到England的值
  8. {
  9. "France": {
  10. "value": "Paris",
  11. "writable": true,
  12. "enumerable": true,
  13. "configurable": true
  14. },
  15. "England": {
  16. "value": "London",
  17. "writable": true,
  18. "enumerable": false,
  19. "configurable": true
  20. }
  21. }
  22. //获取对象某一属性的值
  23. console.log(Object.getOwnPropertyDescriptor(obj, 'France'));

fromEntries

可以将键值对数组转为对象,更方便查找对应的属性。
前端和后端交互数据是,会碰到[ [“name”, “pp”], [“age”, 12]]这样的数据。在前端不方便获取对象的值。就可以使用新增的对象方法fromEntries,将数组转为对象

  1. Object.fromEntries([ ["name", "pp"], ["age", 12] ]);
  2. // 输出结果:{name: "pp", age: 12}

这样方便获取对象的值,就是数组位置变化也能获取到对应值。

数组

flat扁平化

  1. let arr = [1,2,[3],[[4],[5,6]];
  2. console.log(arr.flat(2)); //对数组扁平化,参数设置扁平化深度
  3. console.log(arr.flat(Infinity)) // 使用 Infinity,可展开任意深度的嵌套数组

Promise

finally

正则表达式

dotAll

命名分组

后行断言