学习要点:
1. Global对象
2. Math对象
一、Global对象
Global(全局)对象是ECMAScript中的一个特别方法,因为这个对象是不存在的。在ECMAScript中不属于任何其他对象的属性和方法,都属于它的属性和方法。所以,事实上,并不存在全局变量和全局函数;所有在全局作用域定义的变量和函数,都是Global对象的属性和方法。
因为ECMAScript没有定义如何调用Global对象,所以,Global属性或者Global方法都是无效的(web浏览器将Global作为window对象的一部分加以实现)。
Global对象有一些内置的属性和方法:
1.URI编码方法
URI编码可以对链接进行编码,以便发送给浏览器。采用了特殊的UTF-8编码替换所有无效字符,从而让浏览器能接受和理解。
encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和#号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码。
const str = '小龙 lee';
console.log(encodeURI('//' + str));
// //%E5%B0%8F%E9%BE%99%20lee 只编译了中文
console.log(encodeURIComponent('//' + str));
// %2F%2F%E5%B0%8F%E9%BE%99%20lee 编译了中文和符号
console.log(decodeURI('%E5%B0%8F%E9%BE%99%20lee')); // //小龙 lee
console.log(decodeURIComponent('%2F%2F%E5%B0%8F%E9%BE%99%20lee'));// //小龙 lee
// 解码一定要相对应
因为encodeURIComponent()编码会比encodeURI()编码更彻底,所以前者使用的更多一些。
2. eval方法
担当一个字符串解析器的作用,只接受一个参数,这个参数就是要执行的js代码的字符串。
eval('alert(10)'); // 10
这个方法容易导致程序安全性问题,比如代码注入等。不使用。
3. Global对象属性
Global对象包含了一些属性:undefined、NaN、Object、Array、Function等。
console.log(Array);
// ƒ Array() { [native code] } 返回构造函数
4. window对象
5. Global无法直接访问,而web浏览器可以使用window对象来实现全局访问
console.log(window.Array);
// ƒ Array() { [native code] } 返回构造函数
二、math对象
ECMAScript为保存数学公式和信息提供了一个对象,即Math对象。与我们在JavaScript直接编写数学计算功能相比,Math对象提供的计算功能执行起来要快得多。
1. Math对象的属性
Math对象包含的属性大都是数学计算中可能用到的一些特殊值。
属性 | 说明 |
---|---|
Math.E | 自然对数的底数,即常量 |
Math.LN10 | 10的自然对数 |
Math.LN2 | 2的自然对数 |
Math.LOG2E | 以2为底e的对数 |
Math.LOG10E | 以10为底e的对数 |
Math.PI | π的值 |
Math.SQRT1_2 | 1/2的平方根 |
Math.SQRT2 | 2的平方根 |
console.log(Math.E);
// 2.718281828459045
console.log(Math.PI);
// 3.141592653589793
//...
2. min()和max()方法
console.log(Math.min(55, 66, 77, 55, 44, 22, 1)); // 1
console.log(Math.max(55, 66, 77, 55, 44, 22, 1)); // 77
3. 舍入方法
Math.ceil()执行向上舍入,即总是将值向上舍入为接近的整数
Math.floor()执行向下舍入,即总是将值向下舍入为接近的整数
Math.round()执行标准舍入,即总是将值四舍五入为接近的整数
var num1 = 3.1415926;
var num2 = 3.5;
var num3 = 3.9;
console.log(Math.ceil(num1)); // 4
console.log(Math.ceil(num2)); // 4
console.log(Math.ceil(num3)); // 4
console.log(Math.floor(num1)); // 3
console.log(Math.floor(num2)); // 3
console.log(Math.floor(num3)); // 3
console.log(Math.round(num1)); // 3
console.log(Math.round(num2)); // 4
console.log(Math.round(num3)); // 4
4. random()方法
Math.random方法可以返回介于0-1之间的一个随机数,不包括0和1。如果想大于这个范围的话,可以套用以下公式:
值 = Math.floor(Math.random() * 总数 + 第一个值);
console.log(Math.floor(Math.random * 10 + 1));
//返回1-10的随机数 包含1和10
console.log(Math.floor(Math.random() * 6 + 5));
//返回5-10的随机数 包含5和10
//封装为函数
function numRandom(start, end) {
var total = end - start + 1;
return Math.floor(Math.random() * total + start);
}
for (var i = 0; i < 10; i++) {
document.write(numRandom(5, 10));
document.write('<br>');
}
5. 其他方法:
方法 | 描述 |
---|---|
abs(x) | 返回数字的绝对值 |
acos(x) | 返回数字的反余弦值 |
asin(x) | 返回数字的反正弦值 |
atan(x) | 返回位于-PI/2 和 PI/2 的反正切值 |
atan2(y,x) | 返回(x,y)位于 -PI 到 PI 之间的角度 |
ceil(x) | 返回 x 四舍五入后的最大整数 |
cos(x) | 返回一个数字的余弦值 |
exp(x) | 返回 E^x 值 |
log(x) | 返回底数为E的自然对数 |
pow(x,y) | 返回 y^x 的值 |
sin(x) | 返回数字的正弦值 |
sqrt(x) | 返回数字的平方根 |
tan(x) | 返回一个角度的正切值 |
toSource() | 显示对象的源代码 |
valueOf() | 返回数学对象的原始值 |