目录
1 使用 in
操作符检查私有属性
他检查 obj 是否有一个私有属性
比如对象中的__proto__:
let obj = {a:1}
'__proto__' in obj // true
// 除此之外,可以检测对象属性键名是否存在
'a' in obj // true
'c' in obj // false
2 模块中的顶层await
简单说就是,不用每次使用async搭配,直接使用await来实现异步调用
// my-module.js
const response = await fetch('https://example.com');
const text = await response.text();
console.log(text);
3 error.cause
写法如下,但是具体展示效果有待添加
try {
// Do something
} catch (otherError) {
throw new Error('Something went wrong', {cause: otherError});
}
4 可索引值方法 .at()
这个函数让我们读取给定索引处的元素。它可以接受负索引来从给定数据类型的末尾读取元素。
整数的话从0开始,即对应的索引;负数的话,从1开始即末尾开始:
let arr = [1,2,3,4,5,6]
arr.at(0) // 1 正数索引位置
arr.at(-1) // 6 倒数第一个
arr.at(2) // 3 正数索引位置
arr.at(-2) // 5 倒数第二个
使用范围:数组、字符串、所有类型化数组类:Uint8Array 等相关类型
5 RegExp match 指数 (d)
如果我们给正则添加标志 /d , 使用它生成匹配对象,
就会记录每个组捕获的开始和结束索引(A 行和 B 行):
图一:编号组的匹配索引; 图二: 命名组的匹配索引
6 Object.hasOwn(obj, propKey)
Object.hasOwn(obj, propKey)
提供了一个安全的方式检查对象 obj 是否有键为 propKey的自有(非继承的) 属性
const proto = {
protoProp: 'protoProp',
};
const obj1 = {
__proto__: proto,
objProp: 'objProp',
}
undefined
Object.hasOwn(obj1,'objProp') // true
Object.hasOwn(obj1,'protoProp') // false
obj1.hasOwnProperty('objProp') // true
obj1.hasOwnProperty('protoProp') // false
obj1.hasOwnProperty('__proto__') //false
Object.hasOwn(obj1,'__proto__') // false
请注意,in
检测继承的属性,而 Object.hasOwn()
仅检测自己的属性。
7 新的class成员
目前还没理解,后面使用时来完善使用方式!
class MyClass {
instancePublicField = 1;
static staticPublicField = 2;
#instancePrivateField = 3;
static #staticPrivateField = 4;
#nonStaticPrivateMethod() {}
get #nonStaticPrivateAccessor() {}
set #nonStaticPrivateAccessor(value) {}
static #staticPrivateMethod() {}
static get #staticPrivateAccessor() {}
static set #staticPrivateAccessor(value) {}
static {
// 静态初始化代码块
}
}
ES13(2022) 新特性目前了解了解,后期普遍起来就可以抢先入手使用了
一起进步吧!