单体内置对象
内置对象定义: 由ECMAScript实现提供的、不依赖于宿主环境的对象,即这些对象在ECMAScript程序执行之前就已经存在了Object Array String等都是内置对象
同时还定义了两个单体内置对象:Global Math
Global对象
定义: 终极的兜底对象,不属于其他对象的任何属性和方法,都属于它的属性和方法
事实上,没有全局变量或全局函数,任何在全局作用域中定义的属性和函数都是Global对象的属性isNaN() isFinite() parseInt() parseFloat() 等实际上都是Global对象的方法
ES没有指出如何访问Global对象,但web浏览器都是将这个全局对象作为window对象的一部分加以实现的,所以全局作用域下声明的所有函数和变量都成为了window对象的属性
Global除了前面介绍的方法外还存在其他方法:
URI编码方法
encodeURI() encodeURIComponent() 对URI进行编码,用特殊的UTF-8编码替换所有无效的字符,从而让浏览器接受和理解,前者主要用于整个URI,后者主要用于URI中的某一段
两者主要区别: encodeURI()不会对本身属于URI的特殊字符进行编码; encodeURIComponent()对它发现的任何非标准字符进行编码
⚠️使用encodeURIComponent()方法比较多,因为实践中更常见的是对查询字符串参数而不是对基础URI进行编码
decodeURI() decodeURIComponent() 对URI解码
两者区别:decodeURI()只能对encodeURI()替换的字符进行解码;decodeURIComponent()能够解码encodeURIComponent()编码的所有字符,即可以解码任何特殊字符的编码
⚠️以上URI方法,替代了ES3废弃的escape() unescape()
⚠️URI方法能够编码所有Unicode字符,而原方法只能编码ASCII字符
eval()方法
eval() ES解析器,参数是要执行的js字符串,将参数当作实际的ES语句来解析,并将结果插入到原位置,被执行的代码具有该执行环境相同的作用域链,则执行代码可以访问到该环境中定义的变量/外部代码也可引用执行代码中定义的变量或函数(严格模式下会报错)
⚠️eval()创建的任何变量和函数都不会被提升
Global对象的属性
其他包含属性:
| 属性 | 说明 |
|---|---|
undefined |
特殊值undefined |
NaN |
特殊值NaN |
Infinity |
特殊值Infinity |
Object |
构造函数 |
Array |
构造函数 |
Date |
构造函数 |
RegExp |
构造函数 |
Function |
构造函数 |
Boolean |
构造函数 |
String |
构造函数 |
Number |
构造函数 |
Error |
构造函数 |
EvalError |
构造函数 |
RangeError |
构造函数 |
referenceError |
构造函数 |
SyntaxError |
构造函数 |
TypeError |
构造函数 |
URIError |
构造函数 |
⚠️ES5开始明确禁止给undefined NaN Infinity赋值,否则报错
Math对象
Math 对象保存数学公式和信息
Math对象的属性
| 属性 | 说明 |
|---|---|
Math.E |
自然对数的底数,即常量e的值 |
Math.LN10 |
10的自然对数 |
Math.LN2 |
2的自然对数 |
Math.LOG2E |
以2为底e的对数 |
Math.LOG10E |
以10为底e的对数 |
Math.PI |
π |
Math.SQRT1_2 |
1/2的平方跟根 |
Math.SQRT2 |
2的平方根 |
min()和max()方法
确定一组数值中最小值和最大值,可以接受任意个数值参数

舍入方法
ceil() 向上舍入floor() 向下舍入round() 四舍五入
random()方法
返回>=0同时<1的随机数
可利用此生成一个指定范围内的随机整数
1 | <!-- 包含lowerValue和upperValue --> |

其他方法
| 方法 | 说明 |
|---|---|
Math.abs(num) |
返回num绝对值 |
Math.exp(num) |
返回Math.E的num次幂 |
Math.log(num) |
返回num的自然对数 |
Math.pow(num,power) |
返回num的power次幂 |
Math.sqrt(num) |
返回num的平方根 |
Math.acos(x) |
返回x的反余弦 |
Math.asin(x) |
返回x的反正弦 |
Math.atan(x) |
返回x的反正切 |
Math.atan2(y,x) |
返回y/x的反正切 |
Math.cos(x) |
返回x的余弦 |
Math.sin(x) |
返回x的正弦值 |
Math.tan(x) |
返回x的正切值 |