内置对象的定义:有ECMAScript实现提供的、不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象。
就是说,是不需要我们开发人员先是的实例化对象就能够调用和运行的对象。 在ECM-262中只是定义了两个内置对象 Global和Math对象
一、Global对象(单体对象)
Global(全局)对象是在ECMAScript中是一个特别的对象,因为这个对象是不存在的。在ECMAScript 中任何不属于其他对象的方法和属性都是这个对象的方法和属性。
1、Global对象的 编码/解码方法
window.onload=function(){ var url="http://www.baidu.com"; // 编码encode //该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 var encode=encodeURI(url);//http://www.baidu.com //完全编码,它会将发现的URI中所有的非标准字符进行编码 var encodeComponent=encodeURIComponent(url);//http%3A%2F%2Fwww.baidu.com //解码 //decodeURI(): 用来解码由编码方法 encodeURI()编码的URI var decode=decodeURI(encode);//http://www.baidu.com //decodeURIComponent(): 用来解码由编码方法 encodeURIComponent() 编码的URI var decodeComponent=decodeURIComponent(encodeComponent);//http://www.baidu.com }
2.Global对象的eval()方法
/* eval()方法是用来担当一个字符串解析器的作用,只是接收一个参数, 而这个参数中就是要执行的JS代码,多余的参数会忽略的,此方法可能有返回值也可能没, 要根据参数中的JS代码而定,在AJAX中传递参数的时候很有用 注意: eval() 方法虽然很好用,功能很强大,但是也是很危险的方法,因此在使用的时候应该谨慎使用。 特别是在用户输入数据的时候,很可能会导致程序的安全性问题,比如代码注入等等 */ window.onload=function(){ //作为js解析器 var box="alert('作为js解析器')"; eval(box); //弹出 作为js解析器 alert(eval(box));//先弹出 作为js解析器 然后弹出 undefined 说明此时eval方法没有返回值 //在eval方法解析某种字面量变量的时候,返回的就是这个字面量的值 var box="[3,4,5,6]"; console.info(box); //此时输出的box 就是字符串 [3,4,5,6] var evalBox=eval(box);//此时输出的evalBox 就是数组类型 [3, 4, 5, 6] }
3.其他方法
window.onload=function(){ // parseFloat(numString) 返回由字符串转换得到的浮点数。 var a=parseFloat("abc"); // 返回 NaN。 var b=parseFloat("1.2abc"); // 返回 1.2。 /* parseInt(numString, [radix]) 返回由字符串转换得到的整数。 radix 可选项。在 2 和 36 之间的表示numString所保存数字的进制的值。 如果没有提供,则前缀为 '0x' 的字符串被当作十六进制, 前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。 */ var c=parseInt("abc"); // 返回 NaN。 var d=parseInt("12abc"); // 返回 12。 /* isNaN 检测一个变量是不是一个数 不是一个数返回true,是一个数返回false 使用这个函数的典型情况是检查parseInt和parseFloat方法的返回值。 */ var flag=isNaN(23123); /* isFinite(number) 返回一个 Boolean 值,指明所提供的数字是否是有限的。 如果number不是NaN、负无穷或正无穷,那么isFinite方法将返回true。 如果是这三种情况,函数返回false。 */ var flag2=isFinite(23213.3241); }
二、Math 对象(单体对象)
三、Date对象