Fork me on GitHub

ES8

ES2017

async/await

异步编程

Object.values()

Object.entries()

padStart(len,s)

用另一个字符串从开始位置填充当前字符串,使产生的字符串达到给定长度。

1
2
3
4
const ID = '320322199902223529';
let last4 = ID.slice(-4)
let new_ID = last4.padStart(ID.length, '*');
console.log(new_ID);//**************3529

padEnd(len,s)

在末尾填充,规则跟padStart的一致

1
2
3
const ID = '320322199902223529';
let first3 = ID.slice(0, 3)
let new_ID = first3.padEnd(ID.length, '*');

函数参数逗号结尾

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 参数定义
function f(p) {}
function f(p,) {}

f(p,)

(p) => {}
(p,) => {}

class C {
one(a,) {},
two(a, b,) {},
}

var obj = {
one(a,) {},
two(a, b,) {},
};

如果没有参数就只有逗号会报错

1
2
3
4
5
6
7
8
9
// 带有尾后逗号的数组解构
[a, b,] = [1, 2]

// 带有尾后逗号的对象解构
var o = {
p: 42,
q: true,
}
var {p, q,} = o

同样地,在使用剩余参数时,会抛出 SyntaxError,代码如下:

1
var [a, ...b,] = [1, 2, 3] // SyntaxError: rest element may not have a trailing comma

ShareArrayBuffer

因安全性问题,暂时在 Chrome 和 FireFox 中被禁用。
用来表示一个通用的、固定长度的原始二进制缓冲区,类似 ArrayBuffer 对象。它们可以用来在共享内存上创建视图。与 ArrayBuffer 不同的是,ShareArrayBuffer 不能被分离。

1
2
let sab=new SharedArrayBuffer(1024);
worker.postMessage(sab)

Atomics对象

ShareArrayBuffer对象进行原子操作。

  • Atomics.add(),将指定位置上的数组元素与给定的值相加并返回该元素更新前的值。
  • Atomics.compareExchange(),如果数组中指定的元素与给定的值相等,将其更新为新的值,并返回该元素更新前的值。
  • Atomics.exchange(),将数组中指定的元素更新为给定的值,并返回该元素更新前的值。
  • Atomics.load(),返回数组中指定元素的值
  • Atomics.or(),将指定位置上的数组元素与给定的值相或,并返回该元素更新前的值。
  • Atomics.store(),将数组中指定的元素设置为给定的值,返回该值。
  • Atomics.sub(),将指定位置上的数组元素与给定的值相减,并返回该元素更新前的值。
  • Atomics.xor(),将指定位置上的数组元素与给定的值相异或,并返回该元素更新前的值。
  • Atomics.wait(),检测数组中某个指定位置上的值是否仍然是给定值,是则保持挂起直到被唤醒或超时。返回值为 “ok”、”not-equal” 或 “time-out”。调用时,如果当前线程不允许阻塞,则会抛出异常(大多数浏览器都不允许在主线程中调用 wait())。
  • Atomics.wake():唤醒等待队列中正在数组指定位置的元素上等待的线程。返回值为成功唤醒的线程数量。
  • Atomics.isLockFree(size):可以用来检测当前系统是否支持硬件级的原子操作。对于指定大小的数组,如果当前系统支持硬件级的原子操作,则返回 true;否则就意味着对于该数组,Atomics 对象中的各原子操作都只能用锁来实现。此函数面向的是技术专家。

Object.getOwnPropertyDescriptors()

获取一个对象的所有自身属性的描述

1
2
3
4
const object1 = {
property1: 42
}
const descriptors1 = Object.getOwnPropertyDescriptors(object1);
-------------本文结束感谢阅读-------------