JS回顾笔记(1)内置对象

接收代码时发现了一些以前没用过的写法,查阅后发现是一些内置对象,这篇记录一下 JS 内置对象。

函数属性

全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。
isFinite()
isNaN()
parseFloat() 解析一个参数(必要时先转换为字符串)并返回一个浮点数。
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
encodeURIComponent() 函数通过将特定字符的每个实例替换成代表字符的 UTF-8 编码的一个、两个、三个或四个转义序列来编码 URI(只有由两个“代理”字符组成的字符会被编码为四个转义序列)。与 encodeURI() 相比,此函数会编码更多的字符,包括 URI 语法的一部分。

1
2
3
4
5
6
7
8
const uri = 'https://mozilla.org/?x=шеллы';
const encoded = encodeURI(uri) // 对?后进行编码
const a = encodeURIComponent('test')
try { // 对编码后的字符串进行解码
console.log(decodeURI(encoded))
} catch (e) {
console.error(e);
}

基本对象

基本对象是定义或使用其他对象的基础,包括:Object、Function、Boolean、Symbol

错误对象

错误对象是一种特殊的基本对象。它们拥有基本的 Error 类型,同时也有多种具体的错误类型,包括:Error、AggregateError、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

数字和日期对象

用来表示数字、日期和执行数学计算的对象。包括:Number、BigInt、Math、Date。
BigInt 可以表示任意大的整数。用 Number 表示的最大数字 2^53 - 1,大于这个数值可以用 BigInt 表示。

字符串对象

用来表示和操作文本的对象。包括:String、RegExp。

可索引的集合对象

这些对象表示按照索引值来排序的数据集合,包括数组和类型数组,以及类数组结构的对象。包括:Array、Int8Array、Uint8Array、Uint8ClampedArray、Int16Array、Uint16Array、Int32Array、Uint32Array、Float32Array、Float64Array、BigInt64Array、BigUint64Array

使用键的集合对象

这些集合对象在存储数据时会使用到键,包括可迭代的 Map 和 Set,支持按照插入顺序来迭代元素。另有 WeakMap、WeakSet 两个特殊的集合对象。

1
2
3
4
const map1 = new Map()
map1.set('a', 1)
console.log(map1.get('a'), map1.size, map1.has('a')) // 1, 1, true
map1.delete('a')

结构化数据对象

这些对象用来表示和操作结构化的缓冲区数据,或使用 JSON(JavaScript Object Notation)编码的数据。包括:
ArrayBuffer:用来表示通用的原始二进制数据缓冲区,不能直接操作,需要通过类型化数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。
SharedArrayBuffer:用来表示通用的原始二进制数据缓冲区,不是可转移对象。
Atomics:命名空间对象包含对 SharedArrayBuffer 和 ArrayBuffer 对象执行原子操作的静态方法。
DataView:是一个可以从二进制 ArrayBuffer 对象中读写多种数值类型的底层接口,使用它时,不用考虑不同平台的字节序(endianness)问题。
JSON:将值转换为 JSON 字符串的静态方法。不是一个构造函数。不能将它与 new 运算符 一起使用。

1
2
3
4
5
const littleEndian = (() => {
const buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true);
return new Int16Array(buffer)[0] === 256;
})();

内存管理对象

这些对象会与垃圾回收机制产生交互。包括:WeakRef、FinalizationRegistr

控制抽象对象

控件抽象对象可以帮助构造代码,尤其是异步代码(例如不使用深度嵌套的回调)。例如:Iterator、AsyncIterator、Promise、GeneratorFunction、AsyncGeneratorFunction、Generator、AsyncGenerator、AsyncFunction。

反射对象

包括:Reflect、Proxy。

国际化

ECMAScript 核心的附加功能,用于支持多语言处理。例如:Intl
Intl 对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化,和日期时间格式化。Collator,NumberFormat 和 DateTimeFormat 对象的构造函数是 Intl 对象的属性。本页文档内容包括了这些属性,以及国际化使用的构造器和其他语言的方法等常见的功能。

原始值

原始值(原始数据类型)是一种既非对象也无方法或属性的数据。有 7 种原始数据类型:string、number、bigint、boolean、undefined、symbol、null。
当在原始值上访问属性时,JavaScript 自动将值装入包装对象中,并访问该对象上的属性。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!