第五章 引用类型(二)

3. 单体内置对象

  ECMA-262对内置对象的定义是:由ECMAScript实现提供的,不依赖于宿主环境的对象。这些对象在ECMAScript程序执行前就已经存在。ECMA-262定义了两个单体内置对象:Global和Math。

3.1 Global对象

  Global对象可以说是ECMAScript中最特别的一个对象了,因为不管你从什么角度来看,这个对象都是不存在的。Global对象的职责是:不属于任何对象的属性和方法,都是它的属性和方法。例如前文介绍过的isNaN(),isFinite(),parseInt()以及parseFloat()方法,实际上都是Global对象的方法。除此之外,Global对象还包含一些其他方法:

  • encodeURI()和encodeURIComponent()
  • eval()

  Global对象还包含一些属性,例如特殊值undefined,NaN,以及Infinity。此外,所有原生类型的构造函数,例如Object和Function,也是Global对象的属性。下表列出了Global对象的所有属性:


第五章 引用类型(二)_第1张图片

ECMAScript明确的禁止给undefined,NaN和Infinity赋值,这样做即使在非严格模式下也会导致错误。

  ECMAScript虽然没有指出如何直接访问Global对象,但Web浏览器都是将这个全局对象作为window对象的一部分加以实现的。因此,在全局作用域中声明的变量和函数,都成为了window对象的属性。来看下面的例子:

var color = "red";
 function sayColor(){
    alert(window.color); 
}  
window.sayColor();  //"red" 

JavaScript中的window对象除了扮演ECMAScript规定的Global对象的角色外, 还承担了很多别的任务(例如承担浏览器对象模型(BOM)中的职责)。

另一种取得 Global 对象的方法是使用以下代码:

var global = function(){
    return this; 
}(); 

以上代码创建了一个立即调用的函数表达式,返回 this 的值。如前所述,在没有给函数明确指定 this 值的情况下(无论是通过将函数添加为对象的方法,还是通过调用 call()或 apply()),this 值等于 Global 对象。而像这样通过简单地返回 this 来取得 Global 对象,在任何执行环境下都是可 行的。

3.2 Math对象

  ECMAScript还为保存数学公式和信息提供了一个公共位置,即 Math 对象。与我们在 JavaScript直 接编写的计算功能相比,Math 对象提供的计算功能执行起来要快得多。下表是Math对象常用的属性:


第五章 引用类型(二)_第2张图片
image.png

Math对象常用的方法包括:

  • min()和max()
  • round(),ceil()和floor()
  • random()

Math对象用于完成复杂计算的方法如下:


第五章 引用类型(二)_第3张图片
image.png

你可能感兴趣的:(第五章 引用类型(二))