JavaScript高级程序设计笔记(6)-引用类型之单体内置对象

由ECMAScript实现提供的,不依赖宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。比如: Object、Array、String,还有两个单体内置对象:Global和Math。

Global对象

1、 encodeURI():主要用于整个URI,而encodeURIComponent()主要用于URI中的某一段进行编码。两者主要区别在于:encodeURI()方法不会对本身属于URI的特殊字符进行编码,比如:冒号、正斜杠、问号和井号;而encodeURIComponent则会对它发现的任何非标准字符进行编码。

1
2
3
var s = 'https://www.zhihu.com/topic#Web 开发';
console.log(encodeURI(s));//'https://www.zhihu.com/topic#Web%20%E5%BC%80%E5%8F%91'
console.log(encodeURIComponent(s));//'https%3A%2F%2Fwww.zhihu.com%2Ftopic%23Web%20%E5%BC%80%E5%8F%91'

与encodeURI()和encodeURICompoent()方法对应的,有decodeURI()和decodeURIComponent()方法。decodeURI()方法只能对使用encodeURI()方法替换的字符进行解码。同样,decodeURIComponent()方法能够解码encodeURIComponent()方法编码的所有字符,即他可以解码任何特殊字符。

1
2
3
var uri = 'https%3A%2F%2Fwww.zhihu.com%2Ftopic%23Web%20%E5%BC%80%E5%8F%91';
console.log(decodeURI(uri));//'https%3A%2F%2Fwww.zhihu.com%2Ftopic%23Web 开发'
console.log(decodeURIComponent(uri));'https://www.zhihu.com/topic#Web 开发'

2、eval()方法

eval()方法,大概是ECMAScript语言中最强大的一个方法。通过eval()执行的代码被认为是包含该次调用的执行环境的一部分。因此被执行的代码具有与该环境相同的作用域链。因此eval()方法可以调用包含在环境中的变量。

严格模式下,在外部访问不到eval()中创建的任何变量或函数。

3、 Global对象的属性

4、 window对象

在web中,全局对象作为window的一部分加以实现。因此全局作用域中所有声明的属性和方法,都成了window对象的属性。

另一种取得Global对象的方法:

1
2
3
var global = function(){
return this;
}();

Math对象

1、 Math对象的属性

Math.E/Math.LN10/Math.PI等。

2、 min()和max()方法

1
2
var max = Math.max(1, 3, 6, 7);
var min = Math.min(1, 3, 6, 7);

要获得数组中的最大/最小值可以使用apply()方法

1
2
var vaules = [1, 3, 4, 5, 6];
var max = Math.max.apply(Math, values);

3、 舍入方法

Math.ceil(): 上舍入,即数值向上舍入为最接近的整数。
Math.floor(): 下舍入
Math.round(): 执行标准输入

4、 random()方法: 返回大于0小于1的一个随机数

1
2
3
4
5
6
7
8
9
10
11
//返回一个1到10之间的数值
Math.floor(Math.random() * 10 + 1);

//返回一个2到10之间的数值
Math.floor(Math.random()* 9 + 2);

//指定范围
function selectFrom(lowerValue, upperValue){
var choices = upperValue - lowerValue + 1;
return Math.floor(Math.random() * choices + lowerValue);
}

5、 其他方法

Math.abs(num)/Math.exp(num)/Math.log(num)/Math.pow(num, power)等等