单体内置对象——ECMAScript

来源:互联网 发布:java员工管理系统代码 编辑:程序博客网 时间:2024/06/07 11:51

简介

内置对象:“由 ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript 程序执行之前就已经存在了,例如Object、Array 和 String

Global对象

属性

1、不属于任何其他对象的属性和方法,最终都是它的属性和方法

2、所有在全局作用域中定义的属性和函数,都是 Global 对象的属性

3、Global 对象还包含一些属性,例如特殊的值 undefined、NaN 以及 Infinity 都是 Global 对象的属性。此外,所有原生引用类型的构造函数,像 Object 和 Function,也都是 Global 对象的属性

URI编码方法

encodeURI()和 encodeURIComponent()

作用

对 URI(Uniform Resource Identifiers,通用资源标识符)进行编码,以便发送给浏览器。有效的 URI 中不能包含某些字符,例如空格。而这两个 URI 编码方法就可以对 URI 进行编码,它们用特殊的 UTF-8 编码替换所有无效的字符, 从而让浏览器能够接受和理解

主要区别

1、encodeURI()主要用于整个 URI(例如,http://www.wrox.com/illegal value.htm),而 encode- URIComponent()主要用于对 URI 中的某一段(例如前面 URI 中的 illegal value.htm)进行编码

2、encodeURI()不会对本身属于 URI 的特殊字符进行编码,例如冒号、正斜杠、 问号和井字号;而 encodeURIComponent()则会对它发现的任何非标准字符进行编码

例如:

var uri = "http://www.wrox.com/illegal value.htm#start"; //"http://www.wrox.com/illegal%20value.htm#start" alert(encodeURI(uri)); //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start" alert(encodeURIComponent(uri)); 

decodeURI() 和 decodeURIComponent()

1、decodeURI()只能对使用 encodeURI()替换的字符进行解码。例如, 它可将%20 替换成一个空格,但不会对%23 作任何处理,因为%23 表示井字号(#),而井字号不是使用 encodeURI()替换的。
2、decodeURIComponent()能够解码使用 encodeURIComponent()编码的所有字符,即它可以解码任何特殊字符的编码
例如:

var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start"; //http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start alert(decodeURI(uri)); //http://www.wrox.com/illegal value.htm#start alert(decodeURIComponent(uri)); 

eval()

eval()方法就像是一个完整的 ECMAScript 解析器,它只接受一个参数,即要执行的 ECMAScript(或 JavaScript) 字符串(可能是整个 ECMAScript 语言中最强大的一个方法)
例如:

//1eval("alert('hi')"); //这行代码的作用等价于下面这行代码: alert("hi"); //当解析器发现代码中调用 eval()方法时,它会将传入的参数当作实际的 ECMAScript 语句来解析, 然后把执行结果插入到原位置。//2、通过 eval()执行的代码被认为是包含该次调用的执行环境的一部分, 因此被执行的代码具有与该执行环境相同的作用域链var msg = "hello world"; eval("alert(msg)");    //"hello world" //可见,变量 msg 是在 eval()调用的环境之外定义的,但其中调用的 alert()仍然能够显示"hello world"。这是因为上面第二行代码最终被替换成了一行真正的代码eval("function sayHi() { alert('hi'); }"); sayHi(); // sayHi()是在 eval()内部定义的。但由于对 eval()的调用最终会被替换成定义函数的实际代码,因此可以在下一行调用 sayHi()eval("var msg = 'hello world'; "); alert(msg);     //"hello world" 

注意
能够解释代码字符串的能力非常强大,但也非常危险。因此在使用 eval()时必须极为谨慎,特别是在用它执行用户输入数据的情况下。否则,可能会有恶意用户输入威胁你的站点或应用程序安全的代码(即所谓的代码注入)

window对象

ECMAScript 虽然没有指出如何直接访问 Global 对象,但 Web 浏览器都是将这个全局对象作为 window 对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成为了 window 对象的属性
例如:

//1var color = "red"; function sayColor(){     alert(window.color); } window.sayColor();  //"red" //2、另一种取得 Global 对象的方法var global = function(){     return this;  }(); 

Math对象

min()和 max()方法

min()和 max()方法用于确定一组数值中的最小值和最大值,这两个方法都可以接收任意多个数值参数

var max = Math.max(3, 54, 32, 16); alert(max);    //54 var min = Math.min(3, 54, 32, 16); alert(min);    //3 

舍入方法

方法 说明 Math.ceil() 执行向上舍入,即它总是将数值向上舍入为最接近的整数; Math.floor() 执行向下舍入,即它总是将数值向下舍入为最接近的整数; Math.round() 执行标准舍入,即它总是将数值四舍五入为最接近的整数

例如:

alert(Math.ceil(25.9));     //26 alert(Math.ceil(25.5));     //26 alert(Math.ceil(25.1));     //26 alert(Math.round(25.9));    //26 alert(Math.round(25.5));    //26 alert(Math.round(25.1));    //25 alert(Math.floor(25.9));    //25 alert(Math.floor(25.5));    //25 alert(Math.floor(25.1));    //25 

random()方法

Math.random()方法返回大于等于 0 小于 1 的一个随机数,套用下面的公式,就可以利用 Math.random() 从某个整数范围内随机选择一个值

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

例如:

//选择一个 1 到 10 之间的数值: var num = Math.floor(Math.random() * 10 + 1); //选择一个介于 2 到 10 之间的值var num = Math.floor(Math.random() * 9 + 2); //通过一个函数来计算可能值的总数和第一个可能的值function selectFrom(lowerValue, upperValue) {     var choices = upperValue - lowerValue + 1;     return Math.floor(Math.random() * choices + lowerValue); } var num = selectFrom(2, 10); alert(num);   // 介于 2 和 10 之间(包括 2 和 10)的一个数值 

参考

《JavaScript高级程序设计(第3版)》

原创粉丝点击