您的位置:首页 > Web前端 > JavaScript

js高级教程1

2015-11-23 20:41 645 查看
数据+操作符+操作流程 =语言物质骨架

算法是灵魂骨架

完整的 JavaScript 实现是由以下 3 个不同部分组成的:ECMAScript、文档对象模型、浏览器对象模型。

  JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象;ECMAScript 是一个重要的标准。ECMAScript 仅仅是一个描 述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展。

  DOM 描述了处理网页内容的方法和接口;

  BOM 描述了与浏览器进行交互的方法和接口。

粘合剂:ECMAScript

JavaScript 对象

JS Array

JS Boolean 基本

JS Date

JS Math

JS Number 基本

JS String 基本数据类型 伪对象

JS RegExp

JS Functions

JS Events

Browser 对象

Window

Navigator

Screen

History

Location

HTML DOM 对象

DOM Document

DOM Element

DOM Attribute

DOM Event

Web 浏览器对于 ECMAScript 来说是一个宿主环境,ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力。

ECMAScript 在浏览器之外规定了些什么呢?

简单地说,ECMAScript 描述了以下内容:

语法

类型

语句

关键字

保留字

运算符

对象

DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。

由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

原始值存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。
为变量赋值时,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"

Object 对象具有下列属性:

constructor对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。Prototype对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(interface)(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释程序都根据类的说明构建对象。
一种面向对象语言需要向开发者提供四种基本能力:

封装 - 把相关的信息(无论数据或方法)存储在对象中的能力

聚集 - 把一个对象存储在另一个对象内的能力

继承 - 由另一个类(或多个类)得来类的属性和方法的能力

多态 - 编写能以多种方法运行的函数或方法的能力

ECMAScript 支持这些要求,因此可被是看做面向对象的。

对象的创建和销毁都在 JavaScript 执行过程中发生,理解这种范式的含义对理解整个语言至关重要。

可以创建并使用的对象有三种:本地对象、内置对象和宿主对象。

宿主对象

所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。

所有 BOM 和 DOM 对象都是宿主对象。

ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:

Object

Function

Array

String

Boolean

Number

Date

RegExp

Error

EvalError

RangeError

ReferenceError

SyntaxError

TypeError

URIError

关键字 this

this 的功能

在 ECMAScript 中,要掌握的最重要的概念之一是关键字 this 的用法,它用在对象的方法中。关键字 this 总是指向调用该方法的对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: