今天和同事一起打算重新巩固一下js基础,就从大名鼎鼎的《JavaScript高级程序设计》开始,希望能够坚持下来,共同进步。
第一章主要内容:
- JavaScript历史回顾
- JavaScript是什么
- JavaScript与ECMAScript关系
- JavaScript的不同版本
JavaScript简史
这节主要有几个关键的时间节点和一场NetScape与微软的浏览器大战。以前听boss说过NetScape的Netscape Navigator曾经占领了浏览器市场,后来与微软的IE大战败下阵来都是很久以前发生的事情了。其中在1995年,JavaScript随着Netscape Navigator 2的发布诞生了,原名是LiveScript,为了和已经很红火的Java沾上关系,就改成了JavaScript。随后在1996年,NetScape在Netscape Navigator 3中发布了JavaScript 1.1,而微软则在IE 3中也加入了JavaScript的实现,名为JScript。
标准化自然提到了议事日程,以JavaScript 1.1为蓝本,1997年,大名鼎鼎的ECMAScript由ECMA(欧洲计算机制造商协会)的TC39(39号技术委员会)制定完成的ECMA-262标准所定义。在书中找到了ECMAScript的发音/ek-ma-script/,终于再也不用小心翼翼不敢读这个单词了!
JavaScript实现
完整的JavaScript由三个部分组成
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript与浏览器没有依赖关系,Web浏览器相当于ECMAScript的宿主环境之一。主要由语法、类型、语句、关键字、保留字、操作符、对象组成。
ECMAScript的版本
- 现在很火的ES 6,从2015年开始,由年代命名了,在我的生日6月17日那天发布了ECMAScript 2015,据说增加了很多很屌的特性,ES6增添了许多必要的特性,例如:模块和类,以及一些实用特性,例如Maps、Sets、Promises、生成器(Generators)等。
- 之前的版本,ES 1本质上与JavaScript 1.1相同;ES 2在1998年发布,并没有新增、修改和删节,为了和ISO/IEC-16262一致;1999年,ES 3.0发布,成为JavaScript的通行标准,得到了广泛支持;而2007年悲剧的ES 4.0草案发布,由于改动过大遭到很多大佬的反对,在2008年中止ES 4.0的开发,而将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,也就是现在的ES 5。随后在2011年,ES 5.1版发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。
Web浏览器对ECMAScript的支持
在2008年,五大主流浏览器(IE、Firefox、Safari、Chrome、Opera)全部做到了与ECMA-262兼容。
文档对象模型(DOM)
- DOM是针对XML,经过扩展用于HTML的API。
- DOM将整个页面映射为一个多层节点结构,就是我们常说的DOM树。
- DOM级别
- DOM1级:主要映射文档结构
- DOM Core:规定了如何映射基于XML的文档结构
- DOM HTML:在DOM Core基础上添加了针对HTML的对象和方法
- DOM2级:
- DOM Views:定义了跟踪不同文档视图的接口
- DOM Events:定义了事件和事件处理的接口
- DOM Style:定义了基于CSS为元素应用样式的接口
- DOM Traversal and Range:定义了遍历和操作文档树的接口
- DOM3级
- DOM Load and Save:统一加载嗯哼保存文档的方法
- DOM Validation:验证文档的方法
- DOM Core的扩展:支持XML 1.0规范
- DOM1级:主要映射文档结构
浏览器对象模型(BOM)
书上说有了HTML5之后,BOM的实现细节有望朝着兼容性越来越高的方向发展。这点以后再做了解。
另外,从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上吧所有针对浏览器的JavaScript扩展算作BOM的一部分。比如:
- 弹出新窗口
- 移动、缩放、关闭浏览器窗口
- 提供浏览器详细信息的navigator对象
- 提供浏览器加载页面的详细信息的location对象
- 提供用户显示器详细信息的screen对象
- cookies
- XMLHttpRequest和IE的ActiveXObject自定义对象
总结
这一章很短,每个语言都有自己的故事,有很多历史原因,NetScape和微软的浏览器大战,JavaScript的发展,ECMAScript到底是啥,DOM和BOM傻傻分不清楚,各种JavaScript、ECMAScript版本以及各大浏览器对其的支持等等。