ES2024新特性

2024-05-10  本文已影响0人  啥名都不好起

1、Promise新增静态方法

const { promise, resolve, reject } = Promise.withResolvers();

const { promise, resolve, reject } = Promise.withResolvers();  
  
// 在这里可以使用 resolve 和 reject 函数  
setTimeout(() => resolve('成功!'), 1000);  
  
promise.then(value => {  
  console.log(value); // 输出: 成功!  
});

2、 String.prototype新增原型方法

String.prototype 新增原型方法对应的 TC39 提案是“Well-Formed Unicode Strings”(正确格式的 Unicode 字符串)。

类似于几年前防止 JSON.stringify() 方法返回错误格式的 Unicode 字符串的提案,这个提案也涉及字符串是否为正确格式的 Unicode。

该提案在 String.prototype 上新增了两个原型方法:

2-1 String.prototype.isWellFormed()

const right = 'abc'
const wrong = 'ab\uD800c'

right.isWellFormed() // true,格式正确
wrong.isWellFormed() // false,格式错误

2-2 String.prototype.toWellFormed()

const url = 'https://bilibili.com/search?q=\uD800'

encodeURI(url.toWellFormed())
// "https://bilibili.com/search?q=%EF%BF%BD"

3、数组分组

数组分组提案在 Object 和 Map 上新增了两个静态方法:

3-1、Object.groupBy()

const fans = [
  { name: '龙猫', type: '猫猫' },
  { name: '机器猫', type: '猫猫' },
  { name: '邓紫棋', type: '女粉' },
  { name: '冯提莫', type: '女粉' }
]

const result = Object.groupBy(fans, ({ type }) => type)
image.png
Object.groupBy(fans, ({ type }) => {
    if (typeof type === 'string') {
        return type
    } else {
        return type.type
    }
})
image.png

3-2、Map.groupBy()

剩余新特性可参考https://blog.csdn.net/weixin_50367873/article/details/136174663
上一篇下一篇

猜你喜欢

热点阅读