首先,什么是标准内置对象?
js全局的对象(全局作用域里的对象,而不是全局对象(global对象)),叫做标准内置对象(处在全局作用域的多个对象)。
global对象可以在全局作用域里通过this访问到(但是只有在ECMAScript 5 的非严格模式下才可以,在严格模式下得到的是undefined)。全局作用域包含全局对象中的属性,包括它可能继承来的属性。
标准内置对象的分类
值属性
这些全局属性返回一个简单值,这些值没有自己的属性和方法。
Infinity
全局属性Infinity是一个数值,表示无穷大。
Infinity的属性特征
可写 | 否 |
可枚举 | 否 |
可配置 | 否 |
并且:
在ECMAScript 5的规范中,Infinity是只读的。
因为在JavaScript中,任何数/0不会终止程序的运行,并返回NaN
比0大的数/0,则会得到无穷大,无穷大在JavaScript中表现为Infinity
任何数/Infinity会返回0,Infinity/Infinity会返回NaN
NAN
全局属性NaN是一个非数字的数。
NaN的属性特征
可写 | 否 |
可枚举 | 否 |
可配置 | 否 |
NaN == NaN //false
如何得到NaN?
失败的数字转换(例如:显示转换,如 parseInt("blabla")、Number(undefined),或隐式转换
计算结果不是实数的数学运算(例如,Math.sqrt(-1))--->Math.sqrt() 返回值: 函数返回一个数的平方根,如果参数number为负值,返回NaN。
不定式(例如,0 * Infinity、1 ** Infinity、Infinity / Infinity、Infinity - Infinity)
一个操作数被强制转换为 NaN 的方法或表达式(例如,7 ** NaN、7 * "blabla")
将无效值表示为数字的其他情况(例如 "".charCodeAt(1))
如何判断一个值是否为NaN?
要判断一个值是否为NaN,可以使用Number.isNaN()或isNaN()来判断,也可以使用。NaN == NaN来判断,因为NaN是唯一与自身不相等的值
undefined
全局属性 undefined 表示原始值undefined。它是一个 JavaScript 的原始数据类型(普通类型)
undefined的属性特征
可写 | 否 |
可枚举 | 否 |
可配置 | 否 |
一个没有被赋值的变量的类型是 undefined。如果方法或者是语句中操作的变量没有被赋值,会返回 undefined。
globalThis
全局属性 globalThis 包含全局的 this 值,类似于全局对象(global object)。
函数属性
全局函数可以直接调用,不需要调用时指定所属对象,执行结束后会将结果直接返回给调用者。
eval()
uneval()
isFinite()
isNaN()
parseFloat()
parseInt()
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
基本对象
基本对象是定义或使用其它对象的基础。基础对象包含一般对象、函数对象和错误对象。
object()
Function()
Boolean()
Symbol()
错误对象
错误对象是一种特殊的基本对象。它们拥有Error类型,同时也有多种具体的错误类型。
Error
AggregateError
EvalError
InternalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
数字和日期对象
用来表述数字、日期和执行数学计算的对象。
Number
BigInt
Math
Data
字符串
用来表示和操作字符串的对象
String
RegExp
可索引的集合对象
这些对象表示按照索引值来排序的数据集合,包括数组和类型数组,以及类数组结构的对象。