JavaScript内置对象与宿主无关,独立于宿主环境的ECMAScript实现提供的对象,在ECMAScript 程序开始执行时出现。在 ECMAScript 程序开始执行前就存在,本身就是实例化内置对象,开发者无需再去实例化。
内置对象包含:Global和Math,ECMAScript5中增添了 JSON 这个存在于全局的内置对象。
一、Global对象
ECMAScript 中的 Global 对象在某种意义上是作为一个终极的“兜底儿对象” 来定义的。换句话说,不属于任何其他对象的属性和方法,最终都是Global 对象的属性和方法。事实上,没有全 局变量或全局函数;所有在全局作用域中定义的属性和函数,都是 Global 对象的属性。
URI编码方法
URI:(Uniform Resource Identifiers)通用资源标识符
(1)编码方法
Global 对象的 encodeURI()和encodeURIComponent()方法可以对URI进行编码,以便发送给浏览器。
encodeURI()主要用于对整个URI进行编码,不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、 问号和井字号;encodeURIComponent()主要用于对URI中的某一段进行编码,会对它发现的任何非标准字符进行编码。
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));
注:一般来说 , 我们使用 encodeURIComponent() 方法的时候要比使用 encodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是对基础 URI 进行编码。
(2)解码方法
decodeURI()只能对使用encodeURI()替换的字符进行解码;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()函数计算JavaScript字符串,并把它作为脚本代码来执行;- 只接受一个参数,其中含有要计算的
JavaScript表达式或要执行的语句;- 如果参数是一个表达式,
eval()函数将执行表达式;如果参数是Javascript语句,eval()将执行Javascript语句。
eval("alert('hi')");
// 这行代码的作用等价于下面这行代码:
alert("hi");
在 eval()中创建的任何变量或函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中;它们只在 eval()执行的时候创建。
eval("var msg = 'hello world'; ");
alert(msg); //"hello world"
alert(msg1); // 报错,msg1 is not defined
eval("var msg1 = 'hello hongmao!' ");
Global对象的属性
下表列出了 Global 对象的所有属性:
| 属 性 | 说 明 | 属 性 | 说 明 |
|---|---|---|---|
undefined |
特殊值undefined
|
Date |
构造函数Date
|
NaN |
特殊值NaN
|
RegExp |
构造函数RegExp
|
Infinity |
特殊值Infinity
|
Error |
构造函数Error
|
Object |
构造函数Object
|
EvalError |
构造函数EvalError
|
Array |
构造函数Array
|
RangeError |
构造函数RangeError
|
Function |
构造函数Function
|
ReferenceError |
构造函数ReferenceError
|
Boolean |
构造函数Boolean
|
SyntaxError |
构造函数SyntaxError
|
String |
构造函数String
|
TypeError |
构造函数TypeError
|
Number |
构造函数Number
|
URIError |
构造函数URIError
|
二、Math对象
Math对象用于执行数学任务。与在 JavaScript 直 接编写的计算功能相比,Math 对象提供的计算功能执行起来要快得多。
Math对象的属性
Math 对象包含的属性大都是数学计算中可能会用到的一些特殊值。如下
| 属 性 | 说 明 |
|---|---|
Math.E |
自然对数的底数,即常量e的值 |
Math.LN10 |
10的自然对数 |
Math.LN2 |
2的自然对数 |
Math.LOG2E |
以2为底e的对数 |
Math.LOG10E |
以10为底e的对数 |
Math.PI |
π的值 |
Math.SQRT1_2 |
1/2的平方根(即2的平方根的倒数 |
Math.SQRT2 |
2的平方根 |
Math对象的方法
(1)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
要找到数组中的最大或最小值,可以像下面这样使用 apply()方法:
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);
(2)舍入方法
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
(3)random()方法
Math.random()方法返回大于等于 0 小于 1 的一个随机数,这个方法非常实用。
套用下面的公式,就可以利用 Math.random() 从某个整数范围内随机选择一个值。
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
公式中用到了 Math.floor()方法,这是因为Math.random()总返回一个小数值。而用这个小数 值乘以一个整数,然后再加上一个整数,最终结果仍然还是一个小数。
// 选择一个 1到 10 之间的数值
// 总共有 10 个可能的值(1 到 10),而第一个可能的值是 1
var num = Math.floor(Math.random() * 10 + 1);
// 选择一个介于 2 到 10 之间的值
// 从2数到10要数9个数,因此可能值的总数就是9,而第一个可能的值就是 2
var num1 = Math.floor(Math.random() * 9 + 2);
(4)其他方法
| 方 法 | 说 明 | 方 法 | 说 明 |
|---|---|---|---|
Math.abs(num) |
返回num 的绝对值 |
Math.asin(x) |
返回x 的反正弦值 |
Math.exp(num) |
返回Math.E 的num 次幂 |
Math.atan(x) |
返回x 的反正切值 |
Math.log(num) |
返回num 的自然对数 |
Math.atan2(y,x) |
返回y/x 的反正切值 |
Math.pow(num,power) |
返回num 的power 次幂 |
Math.cos(x) |
返回x 的余弦值 |
Math.sqrt(num) |
返回num 的平方根 |
Math.sin(x) |
返回x 的正弦值 |
Math.acos(x) |
返回x 的反余弦值 |
Math.tan(x) |
返回x 的正切值 |
三、JSON对象
ECMAScript5对解析JSON的行为进行了规范,定义了全局对象JSON。JSON对象有两个方法:stringify()和parse()
stringify()方法
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串,返回包含 JSON 文本的字符串。
JSON.stringify(value[, replacer[, space]])
参数说明:
value: 必需, 要转换的 JavaScript 值(通常为对象或数组)。replacer: 可选。用于转换结果的函数或数组。
var jsonObj = {
"title":"javascript",
"group":{
"name":"jia",
"tel":12345
}
};
JSON.stringify(jsonObj);
// {"title":"javascript","group":{"name":"jia","tel":12345}}
- 如果
replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined,则排除成员。根对象的键是一个空字符串:""。
JSON.stringify({a:1,b:2}, function(key, value){
if (typeof value === "number") {
value = 2 * value;
}
return value;
})
// "{"a":2,"b":4}"
- 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
var jsonObj = {
"title":"javascript",
"group":{
"a":1
}
};
console.log(JSON.stringify(jsonObj,["group","a"])); // {"group":{"a":1}}
space:可选,文本添加缩进、空格和换行符,如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果space大于10,则文本缩进10个空格。space也可以使用非数字,如:\t。
JSON.stringify({ p1: 1, p2: 2 }, null, 2);
/*
返回值如下:
"{
"p1": 1,
"p2": 2
}"
*/
parse()方法
JSON.parse() 方法用于将一个 JSON 字符串转换为对象,返回给定 JSON 字符串转换后的对象。
JSON.parse(text[, reviver])
参数说明:
text: 必需, 一个有效的JSON字符串。reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
JSON.parse('[1, 5, "false"]') // [1, 5, "false"]
JSON.parse('null') // null
var o = JSON.parse('{"name": "张三"}');
o.name // 张三
// 接收一个函数参数,在每个键值对儿上调用
var o = JSON.parse('{"a":1,"b":2}', function(key, value) {
if (key === ''){
return value;
}
if (key === 'a') {
return value + 10;
}
});
o.a // 11
o.b // undefined









网友评论