当前位置: 首页 > news >正文

ES6的symbol及es2021

1.es6 symbol唯一性

为对象添加新的方法,防止覆盖原方法,所以需要一个独一无二的数据类型symbol

a>Symbol('a')参数a作为一种修饰,用去区分

b>转为字符串和布尔值 String(Symbol()) / Boolean(Symbol())

c>作为对象的属性时,三种书写方式:

let mySymbol = Symbol();

c-1>let a = {}; a[mySymbol] = 'Hello!';

c-2>let a = { [mySymbol]: 'Hello!' };

c-3>let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' });

d>对象属性的遍历

let info=Object.getOwnPropertySymbols(a);

for (const val of info) {

    console.log(a[val]);

};//‘Hello!

e>Symbol.for()Symbol.keyFor()

Symbol.for('a')的创建之前会在全局中寻找有没有用Symbol.for()的方式,如果有则不重复创建,直接用已创建的(已登记的)。而Symbol('a')的创建不会去检索全局,直接创建一个新的Symbol类型。

重新使用同一个 Symbol 值’时Symbol.for():

let s1 = Symbol.for('foo'); let s2 = Symbol.for('foo'); s1 === s2 // true

symbol.keyFor()方法返回一个已登记的 Symbol 类型值的key:

let s1 = Symbol.for("foo"); Symbol.keyFor(s1) // "foo"

let s2 = Symbol("foo"); Symbol.keyFor(s2) // undefined 已经创建过了,所以是undefined

2.es2021新特性es12

a>replaceAll()

// 用 dogs 替换所有的“cats”:
str = str.replaceAll('cats', 'dogs');或者str = str.replace(/cats/g, 'dogs');

b>数字分割符

const num = 3_685_134_689;//只是在视觉上有一些帮助,对数值本身没有任何影响。

c>逻辑赋值运算符

// 逻辑与赋值运算符 (&&=)  x &&= y
// 以上代码相当于:x = x && d
// 或者:
if (x) {
  x = y
}

// 逻辑或赋值运算符 (||=):x ||= y
// 相当于:x = x || y
// 或者:
if (!x) {
  x = y
}

// 空值合并赋值运算符 (??=):x ??= y
// 相当于:x = x ?? y
// 或者:
if (x == null || x == undefined) {
    x = y
}

3.Promise.any()

Promise.any() 方法接受多个 promise,并在完成其中任何一个的情况下返回 promise。其返回的是 Promise.any() 完成的第一个 promise。如果所有 promise 均被拒绝,则 Promise.any() 将返回 AggregateError,其中包含拒绝的原因。

(async function() {
  // Await the result of Promise.any():
  const result = await Promise.any([promise1, promise2, promise3])
  console.log(result)
  // Output:
  // 'promise1 is resolved.', 'promise2 is resolved.' or 'promise3 is resolved.'
})();

(async function() {
  // Use try...catch to catch the AggregateError:
  try {
    // Await the result of Promise.any():
    const result = await Promise.any([promise1, promise2])
  }

  catch (err) {
    console.log(err.errors)
    // Output:
    // [ 'promise1 was rejected.', 'promise2 was rejected.' ]
  }
})();

相关文章:

  • leetcode每天5题-Day55-动态规划1
  • QDir(目录)
  • LeetCode每日一题——1774. 最接近目标价格的甜点成本
  • [附源码]JAVA毕业设计口腔医院网站(系统+LW)
  • 电子学会2021年3月青少年软件编程(图形化)等级考试试卷(四级)答案解析
  • 微服务架构
  • 研发效能工程实践-利用Superset快速打造大数据BI平台
  • Springboot RabbitMq源码解析之RabbitListener注解 (四)
  • MedNeRF:用于从单个X射线重建3D感知CT投影的医学神经辐射场
  • 性能测试工具:如何录制脚本?
  • Dubbo SPI扩展机制源码详解(基于2.7.10)
  • 创建你的第⼀个XXL-Job分布式调度任务
  • 基于X86的运算板卡加速边缘智能应用
  • 基于MCMC的交通量逆建模(Matlab代码实现)
  • [附源码]计算机毕业设计校园代取快递系统Springboot程序
  • MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?
  • Express:CORS 跨域资源共享
  • SpringBoot+Vue项目便捷洗衣服务平台
  • c语言结构体看这篇文章就够啦(详细介绍结构体)
  • MySQL主从复制
  • 六 游戏基础知识和SHAPE
  • 【传输层】概述、复用分用、UDP详解、UDP校验
  • Redis基础学习
  • [附源码]Python计算机毕业设计Django学生宿舍管理系统
  • 51单片机——IO拓展(串转并)-74HC595 小白详解
  • 电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)(Matlab代码实现)
  • Apache服务深入学习篇(详细介绍)
  • ICV:2022年中国车载摄像头市场规模有望突破50亿美元大关
  • 适老化产品开发:用科技和智能解决老龄化难题
  • ORB-SLAM2 ---- Tracking::TrackWithMotionModel函数
  • 湖南2021本科批(普通类历史类)第一次征集志愿投档分数线
  • 2022年甘肃高考482分能报什么大学 482分能上哪些院校
  • 2022年全国各大高校在山东招生计划及分数
  • 浙江有哪些师范大学,年浙江师范类大学分数线排名一览表
  • 武汉设计工程学院是几本
  • 2022感恩节放假吗 中国有哪些节日会放假
  • 12种新高考3+1+2选科组合分析 怎么选科好
  • 0基础艺考最容易过的专业有哪些 通过率最高的专业是什么
  • 体育高水平怎么报名
  • 浙江2022普通类第二段平行投档分数线是多少