标签:
数据+操作符+操作流程 =语言物质骨架
算法是灵魂骨架
完整的 JavaScript 实现是由以下 3 个不同部分组成的:ECMAScript、文档对象模型、浏览器对象模型。
JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象;ECMAScript 是一个重要的标准。ECMAScript 仅仅是一个描 述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展。
DOM 描述了处理网页内容的方法和接口;
BOM 描述了与浏览器进行交互的方法和接口。
粘合剂:ECMAScript
Web 浏览器对于 ECMAScript 来说是一个宿主环境,ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力。
ECMAScript 在浏览器之外规定了些什么呢?
简单地说,ECMAScript 描述了以下内容:
DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。
由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。
在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。
为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,还是引用类型。要实现这一点,解释程序则需尝试判断该值是否为 ECMAScript 的原始类型之一,即 Undefined、Null、Boolean、Number 和 String 型。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型:如果它是原始类型,还可以判断它表示哪种原始类型。
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。
除了typeof 其他运算符只能用于已声明的变量上。当函数无明确返回值时,返回的也是值 "undefined".
另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
ECMAScript 的 Boolean 值、数字和字符串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属性和方法。
例如,要获得字符串的长度,可以采用下面的代码:
var sColor = "red"; alert(sColor.length); //输出 "3"
一种面向对象语言需要向开发者提供四种基本能力:
ECMAScript 支持这些要求,因此可被是看做面向对象的。
对象的创建和销毁都在 JavaScript 执行过程中发生,理解这种范式的含义对理解整个语言至关重要。
可以创建并使用的对象有三种:本地对象、内置对象和宿主对象。
所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
所有 BOM 和 DOM 对象都是宿主对象。
ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:
在 ECMAScript 中,要掌握的最重要的概念之一是关键字 this 的用法,它用在对象的方法中。关键字 this 总是指向调用该方法的对象
标签:
原文地址:http://www.cnblogs.com/xiaodoujiaohome/p/4989633.html