简介: ES6
ES6(ECMAScript 2015)引入了许多新的功能和语法,其中一些功能可能相对较冷门,但非常实用。本文将介绍一些这样的高级技巧,包括
Object.entries()
Object.fromEntries()
Symbol类型和Symbol属性
WeakMap和WeakSet
Promise.allSettled()
BigInt
Array.of
Array.from
.at和flat
Object.entries()和Object.fromEntries()
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组。
Object.fromEntries()方法将键值对列表转换为一个对象。
当使用Object.entries()时,可以传入一个对象作为参数。这个对象可以是任何具有可枚举属性的对象。例如:
javascript复制代码const obj = { a: 1, b: 2, c: 3 };
const entries = Object.entries(obj);
console.log(entries); // [["a", 1], ["b", 2], ["c", 3]]
在这个例子中,我们将一个包含三个属性的对象传递给Object.entries()方法,并将返回的结果存储在entries变量中。entries变量现在是一个包含键值对数组的数组。
同样地,当使用Object.fromEntries()时,可以传入一个键值对数组作为参数。这个数组中的每个元素都是一个包含键和值的数组。例如:
javascript复制代码const entries = [["a", 1], ["b", 2], ["c", 3]];
const obj = Object.fromEntries(entries);
console.log(obj); // { a: 1, b: 2, c: 3 }
在这个例子中,我们将一个包含三个键值对的数组传递给Object.fromEntries()方法,并将返回的结果存储在obj变量中。obj变量现在是一个由键值对组成的对象。
Symbol类型和Symbol属性
Symbol是一种新的原始数据类型,用于创建唯一的标识符。
Symbol属性是对象中使用Symbol作为键创建的属性。
javascript复制代码const sym = Symbol('description');
const obj = {
};
console.log(objsym); // value
WeakMap和WeakSet
WeakMap是一种集合类型,其中键必须是对象,并且在没有其他引用时会被垃圾回收。
WeakSet是一种集合类型,其中元素必须是对象,并且在没有其他引用时会被垃圾回收。
javascript复制代码const wm = new WeakMap();
const obj = {};
wm.set(obj, 'value');
console.log(wm.get(obj)); // value
const ws = new WeakSet();
ws.add(obj);