单体内置对象——ECMAScript

简介

内置对象:“由 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 语言中最强大的一个方法)
例如:

//1
eval("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 对象的属性
例如:

//1
var 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版)》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值