es6 拾漏
es6 中被我遗忘的点
- 变量解构可以嵌套很多层,但平时总是习惯解构一层,再手动再解构一层。
- 模板字符串处理可以使用 ${} 之外,还有一个标签模板的功能,举个比方:就是说 ` 之间的会先解释,再将这个作为前面标签(函数)的输入。以前没遇到过。。
1
2let name = 'NB_tzx';
alert`My name is ${name}` - 对超过 2 字节的字符的支持。fromCodePoint (), codePointAt (), at ()
- 正则中 sticky 沾粘,还有点的全匹配,及 s 标志。增加了后行断言(?<=)(?<!),还有具名分组 于是可以用解构赋值来提取匹配的值。
1
2
3
4
5const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const matchObj = RE_DATE.exec('1999-12-31');
const year = matchObj.groups.year; // 1999
const month = matchObj.groups.month; // 12
const day = matchObj.groups.day; // 31
关于没传值时直接报错的 ES6 方式
1 | function throwIfMissing() { |
Symbol
Symbol 主要作用是防止对象的属性被无意地覆盖。通过保留对 let a = Symbol () 的引用,可以访问 obj [a]。通过使用 Symbol.for () 和 Symbol.keyFor (),方便对属性值的存取。有几个小地方需要注意,在使用 instanceof 的时候,首先会调用对象的 [Symbol.hasInstance] 方法,for of 循环调用的是对象的 [Symbol.iterator] 方法。
Promise
1 | async function test(){ |
我以为会直接返回 1,而实际上返回的也是一个 Promise,只不过这个 Promise 是已经 resolve 了的。