什么是JavaScript
前言
最近购买JavaScript高级程序设计,每一章的重点内容都打下笔记吧。加深印象的同时便于复习
第一章,主要介绍了JavaScript为什么会在那个时代诞生,以及如何实现
简短的历史回顾
1995年,网景公司名叫Brendan Eich的工程师,只用10天就写出了JavaScript第一版。主要用途是替代服务器端处理输入验证。在此之前,要验证某个必填字段是否已填写,或者某个输入值是否有效,需要与服务器的一次往返通信。随着网页变得越来越大、越来越复杂。当你好不容易填写完毕,单机“提交按钮”,等了30秒以后,看到一条必填字段没填,此时是什么心情??
JavaScript实现
完整的JavaScript实现包含以下几个部分:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript,即是定义的语言,并不局限于Web浏览器。事实上,这门语言没有输入和输出之类的方法,只是作为一个基准来定义,以便在它之上构建更稳健的脚本语言。提起这个名词,或许很多人不记得。要是提起大名鼎鼎的ES6,是不是知道的更多?
ECMAScript和JavaScript的关系是:前者是后者的规格,后者是前者的一种实现。(实现ECMAScript语言的还有Adobe ActionScript、Jscript)
在基本的层面,它描述这门语言的如下部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
DOM
DOM就是文档对象模型,什么是文档对象模型呢?这就要好好的说一下了。
HTML DOM会将HTML解析成一个树状的结构,该结构被称为节点树,以下列一个简单HTML文档为例
<html>
<head>
<title>
Document
</title>
</head>
<body>
<p>
Hello World!
</p>
</body>
</html>
这些代码通过DOM可以表示为一组分层节点,如下图所示
DOM通过创建表示文档的树,让开发者随心所欲控制网页的内容和结构。使用DOM API,可以轻松地删除、添加、替换、修改节点。
为什么DOM是必需的?
主要原因就是,网景和微软采用不同思路开发DHTML(Dynamic HTML简称,就是动态的HTML),人们担心如果无法控制网景和微软各行其是,那么web端就会发生分裂。万维网联盟开始制定DOM标准的进程。
BOM
BOM就是浏览器对象模型,用于支持访问和操作浏览器的窗口。使用BOM,开发者可以操控浏览器显示之外的部分。BOM是唯一一个没有相关标准的JavaScript实现。HTML5改变了这个局面
总体来说,BOM主要针对浏览器窗口和子窗口。人们把任何特定于浏览器的扩展都归在BOM的范畴内
例如:
- 弹出新浏览器窗口的能力
- 移动、缩放和关闭浏览器窗口的能力
- navigator对象,提供关于浏览器的详尽信息
- location对象,提供浏览器加载页面的详尽信息
- screen对象,提供关于用户屏幕分辨率的详尽信息
- performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息
- 对cookie的支持
- 其它自定义对象。如:XMLHttpRequest和IE的ActiveXObject
总结
ECMAScript:描述了JS的语法和基本对象
DOM(文档对象模型):处理网页内容
BOM(浏览器对象):处理网页内容的方法