IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> ES2020(ES11)新特性 -> 正文阅读

[JavaScript知识库]ES2020(ES11)新特性

类的私有属性

class Person {
    // 公有属性
    name
    // 私有属性
    #age
    #weight
    // 构造方法
    constructor(name, age, weight) {
        this.name = name
        this.#age = age
        this.#weight = weight
    }

    // 通过方法来暴露私有属性
    intro() {
        console.log(this.name)
        console.log(this.#age)
        console.log(this.#weight)
    }
}

// 实例化
const girl = new Person('晓红', 18, '45kg')

console.log(girl.name) // 晓红
// console.log(girl.#age) // 报错
// Private field '#age' must be declared in an enclosing class
// console.log(girl.#weight) // 报错
// Private field '#weight' must be declared in an enclosing class

girl.intro()
/*
晓红
18
45kg
*/

Promise.allSettled()方法

  • 每个异步任务都想得到结果就使用Promise.allSettled()方法
  • 要求每个异步任务都成功才能往下执行则使用Promise.all()方法
// 声明两个promise对象
const p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        // resolve('商品数据1')
        reject('出错了1')
    }, 1000)
})

const p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('商品数据2')
        // reject('出错了2')
    }, 1000)
})

/*
调用 allsettled 方法:不管括号里的Promise成功与否,都会返回成功的Promise,
结果值为一个数组,数组的每一项都是一个对象,每个对象对应每个Promise的状态与结果。
*/
const result = Promise.allSettled([p1, p2])
console.log(result)

/*
调用 all 方法:都成功返回的Promise才成功,
结果值为一个数组,数组的每一项对应每个Promise的结果;
有一个失败的Promise返回的都是失败的状态,
结果为靠前的失败的那个Promise的结果值。
*/
const res = Promise.all([p1, p2])
console.log(res)

结果:

字符串新增方法:matchAll()

  • 对数据的批量提取十分方便(可用于爬虫)
  • 配合正则使用
let str =
    `<ul>
        <li>
            <a>肖生克的救赎</a>
            <p>上映日期: 1994-09-10</p>
        </li>
        <li>
            <a>阿甘正传</a>
            <p>上映日期: 1994-07-06</p>
        </li>
    </ul>`

// 声明正则
const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/sg

// 调用方法
const result = str.matchAll(reg)
console.log(result)

const arr = [...result]
console.log(arr)

结果:

可选链操作符〔?.〕

  • ?.用于判断对象的链式参数是否传递
function main(config) {
    // const dbHost = config && config.db && config.db.host
    // 等价于
    const dbHost = config?.db?.host

    console.log(dbHost) // 192.168.1.100
}

main({
    db: {
        host: '192.168.1.100',
        username: 'root'
    },
    cache: {
        host: '192.168.1.200',
        username: 'admin'
    }
})

动态 import

  • 懒加载,只有用模块的时候才加载模块,不用则不加载

index.html:

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="btn">点击</button>
    <script src="./js/app.js" type="module"></script>
</body>

</html>

app.js:

const btn = document.getElementById('btn')

btn.onclick = function () {
	// 动态 import
    import('./hello.js').then(module => {
        module.hello()
    })
}

hello.js:

export function hello() {
    alert('Hello')
}

新增的数据类型:BigInt(大整型)

  • 在普通整型数后面加上字母n就成了大整型数据
// 大整形
let n = 521n
console.log(n, typeof (n)) // 521n 'bigint'

// 函数BigInt():将普通整型数据转为大整型
console.log(BigInt(123)) // 123n
// console.log(BigInt(1.2)) // 浮点数会报错

// 大数值运算
let max = Number.MAX_SAFE_INTEGER // 最大安全整数
console.log(max) // 9007199254740991
console.log(max + 1) // 9007199254740992
console.log(max + 2) // 9007199254740992 // 无法再加

console.log(BigInt(max)) // 9007199254740991n
console.log(BigInt(max) + BigInt(1)) // 9007199254740992n
console.log(BigInt(max) + 2n) // 9007199254740993n

globalThis:全局的this

  • 在浏览器环境是Window对象
console.log(globalThis) // Window
  • 在nodeJS环境是Object [global]对象
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:49:07  更:2022-01-28 11:50:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:49:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码