变量的解构赋值
let {toString: s} = 123;
s === Number.prototype.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true
数值的扩展
- Number.isFinite(), Number.isNaN()
- Number.parseInt(), Number.parseFloat()
- Number.isInteger()
- Number.EPSILON
- 安全整数和 Number.isSafeInteger()
- Math 对象的扩展
- BigInt 数据类型
字符串的新增方法
- String.fromCodePoint()
- String.raw()
- 实例方法:codePointAt()
- 实例方法:normalize()
- 实例方法:includes(), startsWith(), endsWith()
- 实例方法:repeat()
- 实例方法:padStart(),padEnd()
- 实例方法:trimStart(),trimEnd()
- 实例方法:matchAll()
- 实例方法:replaceAll()
- 实例方法:at()
- 实例方法:toWellFormed()
对象
有四个操作会忽略enumerable
为false
的属性。
for...in
循环:只遍历对象自身的和继承的可枚举的属性。Object.keys()
:返回对象自身的所有可枚举的属性的键名。JSON.stringify()
:只串行化对象自身的可枚举的属性。Object.assign()
: 忽略enumerable
为false
的属性,只拷贝对象自身的可枚举的属性。
ES6 一共有 5 种方法可以遍历对象的属性。
(1)for...in
for...in
循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。
(2)Object.keys(obj)
Object.keys
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames
返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols
返回一个数组,包含对象自身的所有 Symbol 属性的键名。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys
返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
以上的 5 种方法遍历对象的键名,都遵守同样的属性遍历的次序规则。
- 首先遍历所有数值键,按照数值升序排列。
- 其次遍历所有字符串键,按照加入时间升序排列。
- 最后遍历所有 Symbol 键,按照加入时间升序排列。
对象新增方法
- Object.is()
- Object.assign()
- Object.getOwnPropertyDescriptors()
- __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
- Object.keys(),Object.values(),Object.entries() 返回数组
- Object.fromEntries()
- Object.hasOwn()
数组
- 扩展运算符
- Array.from()
- Array.of()
- 实例方法:copyWithin()
- 实例方法:find(),findIndex(),findLast(),findLastIndex()
- 实例方法:fill()
- 实例方法:entries(),keys() 和 values() 返回迭代对象
- 实例方法:includes()
- 实例方法:flat(),flatMap()
- 实例方法:at()
- 实例方法:toReversed(),toSorted(),toSpliced(),with()
- 实例方法:group(),groupToMap()
函数
Iterator 和 for...of 循环
(Symbol.iterator
属性)
原生具备 Iterator 接口的数据结构如下。
- Array
- Map
- Set
- String
- TypedArray
- 函数的 arguments 对象
- NodeList 对象
Set 和 Map 数据结构
Set
Set 结构的实例有以下属性。
Set.prototype.constructor
:构造函数,默认就是Set
函数。Set.prototype.size
:返回Set
实例的成员总数。
Set 实例的方法分为两大类:
操作方法(用于操作数据)和遍历方法(用于遍历成员).
Set.prototype.add(value)
:添加某个值,返回 Set 结构本身。Set.prototype.delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。Set.prototype.has(value)
:返回一个布尔值,表示该值是否为Set
的成员。Set.prototype.clear()
:清除所有成员,没有返回值。
遍历方法(用于遍历成员
Set 结构的实例有四个遍历方法,可以用于遍历成员。
Set.prototype.keys()
:返回键名的遍历器Set.prototype.values()
:返回键值的遍历器Set.prototype.entries()
:返回键值对的遍历器Set.prototype.forEach()
:使用回调函数遍历每个成员
Set.prototype[Symbol.iterator] === Set.prototype.values
// true
ES2025 为 Set 结构添加了以下集合运算方法。
- Set.prototype.intersection(other):交集
- Set.prototype.union(other):并集
- Set.prototype.difference(other):差集
- Set.prototype.symmetricDifference(other):对称差集
- Set.prototype.isSubsetOf(other):判断是否为子集
- Set.prototype.isSupersetOf(other):判断是否为超集
- Set.prototype.isDisjointFrom(other):判断是否不相交
Map
方法属性
- size
- Map.prototype.set(key, value)
- Map.prototype.get(key)
- Map.prototype.has(key)
- Map.prototype.delete(key)
- Map.prototype.clear()
遍历方法
- Map.prototype.forEach()
- Map.prototype.values()
- Map.prototype.entries()
- Map.prototype.keys()
map[Symbol.iterator] === map.entries
// true