Global 对象
还包含一些属性,例如,特殊的值undefined、NaN 以及Infinity 都是Global 对象的属性。此外,所有原生引用类型的构造函数,像Object 和Function,也都是Global 对象的属性。下表列出了Global 对象的所有属性。
ECMAScript 5 明确禁止给undefined、NaN 和Infinity 赋值,这样做即使在非严格模式下也会 导致错误。
window 对象
ECMAScript 虽然没有指出如何直接访问Global 对象,但Web 浏览器都是将这个全局对象作为window 对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性。来看下面的例子。
var color = "red";
function sayColor(){
alert(window.color);
}
window.sayColor(); //"red"
JavaScript中的window 对象除了扮演ECMAScript规定的Global 对象的角色外, 还承担了很多别的任务。第8章在讨论浏览器对象模型时将详细介绍window 对象。
Math对象
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);
小数值舍入为整数的几个方法:Math.ceil()、Math.floor()和Math.round()。
random()方法
套用下面的公式,就可以利用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);
从2 数到10 要数9 个数,因此可能值的总数就是9,而第一个可能的值就是2。
多数情况下,其实都可以通过一个函数来计算可能值的总数和第一个可能的值,例如:
function selectFrom(lowerValue, upperValue) {
var choices = upperValue - lowerValue + 1;
return Math.floor(Math.random() * choices + lowerValue);
}
var num = selectFrom(2, 10);
aler t(num); // 介于 2 和10 之间(包括 2 和 10)的一个数值
利用这个函数,可以方便地从数组中随机取出一项,例如:
var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];
var color = colors[selectFrom(0, colors.length-1)];
aler t(color); // 可能是数组中包含的任何一个字符串