JS再可以创建并使用的对象包括三种类型:本地对象、内置对象和宿主对象
1 本地对象
独立于宿主环境的JS预定义的对象,本地对象实际上是构造函数,用户自定义的对象都是本地对象的具体实例
Object | Function | Array |
ReferenceError | RangeError | String |
SyntaxError | EvalError | Boolean |
TypeError | Error | Number |
URLError | RegExp | Date |
2 内置对象
内置对象是由本地对象来实现的,且独立于宿主环境的所有对象。内置对象常驻内存,因此不需要实例化,JS的内置对象有Math和Global两个
也有人把本地对象和内置对象统称为原生对象,与宿主对象相对
3 宿主对象
宿主对象是JS寄宿环境定义的对象,是由客户端浏览器环境定义的,与JS语言本身没有直接的关系,不过JS可以控制这些对象的行为,实现对其进行的读写操作,包括Window、Document、History等
4 Global对象
其实Global对象是不存在的,我们无法访问到,也无法实例化,但是它却拥有很多属性和方法
Global对象的属性 | 说明 |
Inifinity | 表示正无穷大 |
NaN | 非数字 |
undefined | 未定义的值 |
Global对象的方法 | 说明 |
encodeURI() | 对某些字符进行转义对URL进行编码 |
decodeURI() | 对使用encodeURI方法的URL进行解码 |
encodeURIComponent() | 对URL的组件进行编码 |
decodeURIComponent() | 对URL的组件进行解码 |
escape() | 使用转义序列替换某些字符来对字符串进行编码 |
unescape() | 对使用escape的字符串进行解码 |
eval() | 计算JS代码字符串的值,并返回计算值 |
isFinite() | 检测一个值是否是无穷大的数字 |
isNaN() | 检测一个值是否是非数字的值 |
parseFloat() | 把字符串解析为浮点类型的数据 |
parseInt() | 把字符串解析为整型的数据 |
由于JS中规定了所有的对象和函数都不是独立存在的,所有的函数都是某个对象的方法,所有的对象都是某个类的子类,因此JS定义了一个虚无的抽象类Global,它作为JS的全局属性和全局函数的占位符而存在,但是我们不能使用Global来调用全局属性或者函数,因为Global是一个高度抽象的虚无概念。实际上,只要一个对象定义了特殊环境列出的基本属性和函数,那么这个对象就可以称为全局对象,例如在客户端JS环境下,全局对象是Window对象,它表示允许JS代码的浏览器窗口。
5 Math对象
在JS中将所有复杂的数学公式和运算都封装在Math对象中,该对象是内置对象,常驻内存,不需要实例化,就可以直接调用
Math对象的常量 | 说明 |
E | 常量e,自然对数的底数 |
PI | π的值,约为3.14159265.... |
Math对象的常用方法 | 说明 |
sin() | 计算正弦值 |
cos() | 计算余弦值 |
log() | 计算一个数的自然对数 |
exp(x) | 计算常量e的x次方 |
pow(x,y) | 计算x的y次方 |
sqrt() | 计算平方根 |
abs() | 计算绝对值 |
round() | 四舍五入 |
ceil() | 向上舍入 |
floor() | 向下舍入 |
max() | 返回最大参数 |
min() | 返回最小参数 |
random() | 返回0.0-1.0之间的一个随机数 |
6 Date对象
JS将时间作为一种特殊的字符串来表示,并通过Date对象进行统一管理,在一些特殊的环境中,时间也可以作为数值类型来处理,例如时间比较,时间运算等