读书笔记:ES5-单体内置对象

单体内置对象

内置对象定义: 由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
2
3
4
5
<!-- 包含lowerValue和upperValue -->
function selectFrom(lowerValue,upperValue){
var choices = upperValue - lowerValue + 1;
return Math.floor(Math.random() * choices + lowerValue)
}

其他方法
方法 说明
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的正切值