关于javascript:ECMAScript2021新增了哪些好东西

String.prototype.replaceAll

都用过replace,但只会匹配字串中第一个符合条件的字符。如果心愿替换全副符合条件的,以往个别会用到正则。这状况下replaceAll提供了更不便的写法。

const str = 'I love JS,I enjoy it.'
console.log(str.replace('I','You')) 
//=>You love JS,You enjoy it.

Private methods and getter/setter

新增在办法前增加#标记示意其为公有办法。

Class Product {
  #showName{
    console.log('book-name') 
  }
  showPrice{
     console.log('19.9')
  }
}

const product = new Product()
person.getName();
// =>报错
同样能够用在获取器getter上:
Class Product {
  get #name{
     return 'book-name'
  }
  get price{
     return 19.9
  }
}
const product = new Product()
console.log(product.name)
// =>undefined

Promise.any()

Promise新增any办法,可承受一个蕴含多个申请的数组。返回当中最快响应的申请后果。

const API = 'https://api.github.com/users';
Promise.any([
  fetch(`${API}/cyinside`),
  fetch(`${API}/vuejs`),
])
  .then(response => response.json())
  .then(({ login }) => console.log(`hi ${login}`))

// => hi vuejs

Logical assignment operators

a ||= b
//等价于
a || ( a = b )

a &&= b
//等价于
a && ( a = b )

a ??= b
//等价于
a ?? ( a = b )

Numeric separators

新增容许能够在数值两头增加下划线分隔,减少数值可读性。

const x = 1_000_000_000
console.log(x)
// => 1000000000

WeakRef

WeakRef代表弱援用,主要用途是实现对大型对象的缓存或映射。当不想长时间保留大量曾经应用的缓存和映射的时候,能够容许内存被垃圾回收。如果当前须要它,再生成新的缓存。
具体解释可看[[MDN] https://developer.mozilla.org… ]

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理