文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
ES2018
字符串扩展
- 放松对标签模板里字符串转义的限制:遇到不合法的字符串转义返回
undefined
,并且从raw
上可获取原字符串
对象扩展
- 扩展运算符(
...
):转换对象为用逗号分隔的参数序列({ ...obj }
,相当于rest/spread
参数的逆运算)
扩展应用
- 克隆对象:
const obj = { __proto__: Object.getPrototypeOf(obj1), ...obj1 }
- 合并对象:
const obj = { ...obj1, ...obj2 }
- 转换字符串为对象:
{ ..."hello" }
- 转换数组为对象:
{ ...[1, 2] }
- 与对象解构赋值结合:
const { x, ...rest/spread } = { x: 1, y: 2, z: 3 }
(不能复制继承自原型对象的属性) - 修改现有对象部分属性:
const obj = { x: 1, ...{ x: 2 } }
正则扩展
s
修饰符:dotAll
模式修饰符,使.
匹配任意单个字符(dotAll
模式)dotAll
:是否设置s
修饰符- 后行断言:
x
只有在y
后才匹配 - 后行否定断言:
x
只有不在y
后才匹配 Unicode
属性转义 :匹配符合Unicode
某种属性的所有字符- 正向匹配:
\p{PropRule}
- 反向匹配:
\P{PropRule}
- 限制:
\p{...}
和\P{...}
只对Unicode
字符有效,使用时需加上 u 修饰符
- 正向匹配:
- 具名组匹配 :为每组匹配指定名字(
?<GroupName>
)- 形式:
str.exec().groups.GroupName
- 解构赋值替换
- 声明:
const time = "2017-09-11"、const regexp = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u
- 匹配:
time.replace(regexp, "$<day>/$<month>/$<year>")
- 声明:
- 形式:
Promise
finally()
:指定不管最后状态如何都会执行的回调函数
Async
- 异步迭代器(
for-await-of
):,循环等待每个Promise
对象变为resolved
状态才进入下一步
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论