1-类的新增特性
类私有属性和方法:#
class Person{
// 不需要传参、一开始就需要初始化的,就可以在类的最外面直接声明这个成员
state={
a:1,
b:2
}
constructor(name,age){
this.name=name;
this.age=age;
}
}
在属性和方法前加#表示私有
#obj={}
#prest(){}
- 静态成员,不需要实例化就能访问到的属性和方法,直接通过
类名.
就能拿到 - 还可以给类定义静态成员和静态私有函数。类的静态方法可以使用this关键字访问其他的私有或者公有静态成员
class Cache{
static #count=0;
static getCount(){
return this.count
}
}
静态代码块
ES13允许在类中通过static关键字定义一系列静态代码块,这些代码块只会在类被创造的时候执行一次
。
一个类可以定义任意多的静态代码块
,这些代码块会和穿插在它们之间的静态成员变量
一起按照定义的顺序在类初始化的时候执行一次。我们还可以使用super关键字
来访问父类的属性。
class Cache{
static obj = new Map();
static{
this.obj.set("name","keiwin")
this.obj.set("age",100)
}
static {
}
}
2-支持在最外层写await
await协程的一种方案
顶层await只能用在ES6模块,不能用在CommonJ
S模块。这是因为CommonjS模块的require()是同步加载,如果有顶层await,就没法处理加载了。
<script type="'module">
function ajax(){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve("data-1111");
},2000);
})
}
let res =await ajax();
console.log(res)
</script>
3-at函数来索引函数
- 传一个数值进去能把一个数值对应在数组中的位置里面的元素传出来
-1倒数第一个,-2倒数第二个 - at()对字符串同样适用,取的是对应的字符
4-正则匹配的开始和结束索引
在正则表达式后添加d就能拿到开始和结束索引
5-其他新增特性
findLast()和findLastIndex()函数
从最后开始查找返回对应的值
Error对象的Cause属性
Error对象多了一个cause属性来指明错误出现的原因。这个属性可以帮助我们为错误添加更多的上下文信息,从而帮助使用者们更好地定位错误。
function getData(){
try{
console.log(kerwin)
}catch(e){
throw new Error('New error 1111111',{cause:"这是因为,,,,,,,"});
}
}
try{
getData()
}catch(e){
console.1og(e.cause)
}
}