内建对象就好比是JDK中的类库,开发者可以直接拿来使用,这极大的方便了常见的编程任务。这篇文章就来浏览一下主要的内建对象,当然,我们并不是第一次接触内建对象,前面已经接触到的就有Object、Function、Boolean、Number、String,对于已经介绍过的,这里再总结复习一下,没有介绍过的,根据相关性来对比的总结,RegExp对象及正则表达式在下一篇中再单独介绍。
1、内建全局单例对象
(1)内建全局单例对象:在整个执行环境中只有一个对象实例,这些对象没有内部属性[[Construct]]和[[Call]],因此不能使用new来创建,也不能作为函数来调用,而是直接使用对象名称来引用其属性和方法(对于全局对象,则可以直接使用属性和方法名)。内建全局单例对象有Global、Math、JSON。
(2)内建常量:主要是指内建全局单例对象的属性,这些属性的[[Writable]]、[[Configurable]]、[[Enumerable]]特性全部为false,因此不能修改属性值,不能删除属性,也不能在for-in循环中枚举。这些内建常量有:
对象 名称 常量值 说明 对象 名称 常量值 说明Global NaN NaN 表示不是数值 Math E ≈2.718 自然对数的底数 e
Infinity +∞ 正无穷 LN10 ≈2.303 2 的自然对数
undefined undefined 未定义 LN2 ≈0.693 10的自然对数
LOG2E ≈1.443 e 的以2 为底的对数
LOG10E ≈0.434 e 的以10为底的对数
PI ≈3.142 圆周率,即圆周长与直径的比
SQRT1_2 ≈0.707 2的平方根的倒数
SQRT2 ≈1.414 2的平方根
注:Global对象中的常量可以使用名称直接访问,Math对象中的常量需使用类似Math.PI的形式来访问。
(3)内建静态方法:
所属对象 类别 方法 说明Global 全局解析方法 eval(x) 解析Javascript字符串,eval中定义的变量不会提升,在严格模式下,外部不能访问eval内定义的变量
字符串解析为Number parseInt(string,radix) 将字符串解析为整数,可以传入一个进制,会忽略前导空格
parseFloat(string) 将字符串解析为浮点数,会忽略前导的空格和前导0
Number判断方法 isNaN(number) 判断是否为数字
isFinite(number) 判断是否为有限数
URI处理方法 encodeURI(uri) 对URI编码,用于整个URI,用特殊的UTF-8编码替换所有无效字符,不会对本身属于URI的特殊字符编码,如冒号,正斜杠,问号,井号等。
decodeURI(ecodedURI) 对使用ecnodeURI()编码的字符串解码
encodeURIComponent(uriComponent) 对URI编码,用于URI中的某一段,会对发现的任何非标准字符进行解码
decodeURIComponent(encodedURIComponent) 对使用ecnodeURIComponent()编码的字符串解码
内建对象构造器方法
Object、Function、Array、String、Number、Boolean、Date、RegExp
Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
这里每一个构造函数都构成了一个内建的对象类型Math 三角函数 sin(x)、cos(x)、tan(x) x的正弦、余弦、正切
反三角函数 asin(x)、acos(x)、atan(x)、atan2(y,x) x的烦正弦、反余弦、反正切、y/x的反正切
舍入函数 ceil(x)、floor(x)、round(x) 向上舍入(大于该数的最小整数)、向下舍入(小于该数的最大整数)、四舍五入
最值函数 max([value1[value2[,...]]])、min([value1[,value2[,...]]]) 最大值、最小值
随机函数 random() 返回介于0和1之间的随机数,不包括0和1.随机公式:随机值=Math.floor(Math.random() * 可能值的个数 + 初始值)
其它常见数学函数 abs(x)、exp(x)、log(x)、pow(x,y)、sqrt(x) 绝对值、Math.E的x次幂、x的自然对数、x的y次幂、x的平方根
JSON 解析 parse(text[,reviver]) 把JSON字符串解析外为Javascript值
序列化 stringify(value[,replacer[,space]]) 把Javascript对象序列号为JSON字符串,默认情况下不包括空格和缩进,所有函数、原型成员以及值为undefined的属性会被忽略
说明:
(1)全局对象中还有escape()/unescape()方法,由于这两个方法只能正确编码ASCII字符已经被废弃,而使用上表中的encodeURI()等方法来替换。