ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### ES11新特性 #### 私有属性 > 只能在类的内部对其进行修改和访问 ~~~javascript 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 Personn('小红',18,'45kg') console.log(girl) // 正常访问 console.log(girl.#age) // 在类的外部无法访问私有属性 ~~~ #### Promise.allSettled > 接收一个promise数组,返回promise对象(永远是成功的状态) > > 返回的值是每一个promise的状态和结果 > > [参考链接-allSettled](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) [扩展阅读-Promise 中的三兄弟 .all(), .race(), .allSettled()](https://segmentfault.com/a/1190000020034361) ![image-20200718122325135](http://image.mdashen.com/pic/image-20200718122325135.png) * Promise.all([p1,p2]) > 全部成功,才返回成功,有一个失败就返回失败 > Promise.all 和 Promise.allSettled常用于批量异步任务 #### 字符串扩展 ##### String.prototype.matchAll > 用来得到正则批量匹配得到的结果 ~~~javascript let str = ` <ul> <li> <a>肖申克的救赎</a> <p>上映日期:1994-0910</p> </li> <li> <a>阿甘正传</a> <p>上映日期:1994-0716</p> </li> </ul> ` const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/sg // [s](#正则扩展-dotAll模式) const result = str.matchAll(reg) // for (let v of result) { // 与下面...一个功能 // console.log(v) // } console.log([...result]) ~~~ #### 可选链操作符? > 按照操作符之前的属性是否有效,链式读取对象的属性或者使整个对象链返回 `undefined` ~~~javascript function main(config){ const dbHost = config && config.db && config.db.host // config &&判断config是否存在 console.log(dbHost) // 当config存在,才能读取config.db } // 不先判断,当config不存在,直接config.db会报错 main({ db:{ host:'192.168.0.2', username:'root' } }) // 可选链操作符?. const dbHost = config?.db?.host // 可以起到上述判断的作用 ~~~ #### 动态import > 当使用到需要导入的模块时,才导入。提升加载效率 ~~~javascript const btn = document.getElementById('btn') btn.onclick = function(){ import('./hello.js').then(module=>{ // import返回promise对象,module就是导入的对象 module.hello() // hello()hello.js中一个普通方法 }) } ~~~ #### BigInt > 用于大数值运算 ~~~javascript let n = 521n // 大整型 console.log(n,typeof(n)) // 521n "bigint" let n1 = 521 BigInt(n1) // 普通整型转大整型 -> 521n ~~~ ~~~JavaScript let max = Number.MAX_SAFE_INTEGER // 9007199254740991 console.log(max) console.log(max+1) // 正常 console.log(max+2) // 不正常,在向后加,有的正常有的不正常 console.log(BigInt(max)) console.log(BigInt(max)+BigInt(1)) // 正常,BigInt 不能直接与Int运算,要先转成BigInt console.log(BigInt(max)+BigInt(2)) // 正常 ~~~ #### globalThis > 始终指向全局对象,无论执行环境是什么(浏览器、nodejs) > 浏览器下指:Window > > nodejs下指:global ![image-20200718175918068](http://image.mdashen.com/pic/image-20200718175918068.png)