JavaScript高级程序设计(第4版)-第一章学习
第一章 什么是Javascript
一、历史
JavaScript的名字怎么来的
首先,我们从javascript的历史开始了解,在以前的时候网页要验证某个必填字段是否填写,或者是判断输入的值的正确与否,每一次都要与服务器来一次交互通信,你可以想象一下:“当你填完一个信息登记表单,提交后,等待30秒,结果确实你的必填字段没填或者是值无效”,想象都崩溃:(
然后,1995 年,网景公司一位名叫 Brendan Eich 的工程师,开始为即将发布的 Netscape Navigator 2(是浏览器简称NN) 开发一个叫 Mocha(后来改名为 LiveScript)的脚本语言。当时的计划是在客户端和服务器端都使用它,它在服务器端叫 LiveWire。LiveScript就是来解决这种每一次都要与服务器来一次交互通信的问题,后来为了赶上java的热度就改名为javascript。
JavaScript这个名字就这么诞生了。
又来一个JScript?
但是,到后来微软看到网景公司的JavaScript大受欢迎,于是就大力投入资源研发IE,在网景公司发布Netscape Navigator 3之后不久,微软就发布了IE3,为了与网景的JavaScript有区别把解决服务器的往返通信问题的脚本取名JScript。
有两个版本一个JavaScript、一个JScript怎么办?
微软的 JavaScript 实现意味着出现了两个版本的 JavaScript:Netscape Navigator 中的 JavaScript,以及 IE 中的 JScript。JavaScript 还没有规范其语法或特性的标准,两个版本并存让这个问题更加突出了。随着业界担忧日甚,JavaScript 终于踏上了标准化的征程。为了给JavaScript标准化,1997 年,JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会(Ecma),一群少年走上了改造之路,这群少年就是来自网景、Sun、微软、Borland、Nombas 和其他对这门脚本语言有兴趣的公司的工程师组成。他们被称为第 39 技术委员会(TC39),通过他们的努力就打造了ECMA-262,新的的脚本语言标准。
二、 知识点
以上部分就是一些历史故事,有兴趣可以仔细了解,重点还是以下知识点:
1.其实JavaScript是分成3个部分BOM、DOM、ECMAscript,BOM和DOM我们会在后面的内容在学习现在就了解了解。
2.ECMAscript在前面的历史可以了解到就是一种规范,满足这种规范的都是ECMAscript,JavaScript 实现了ECMAScript,而 Adobe ActionScript 同样也实现了 ECMAScript。
3.ECMAscript到底定义了那些呢?
语法、类型、语句 、关键字、保留字、操作符、全局对象。
4.随着ECMAscript的发展有了很多的版本:
主要学习ES5和ES6版本,但是到现在一共有到ES10版本;
ECMA-262第 5 版新功能包括原生的解析和序列化 JSON 数据的 JSON 对象、方便继承和高级属性定义的方法,以及新的增强 ECMAScript 引擎解释和执行代码能力的严格模式。
ECMA-262 第 6 版,俗称 ES6、ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
5.ECMAScript 符合性是什么意思?
ECMA-262 阐述了什么是 ECMAScript 符合性。要成为 ECMAScript 实现,必须满足下列条件(前两个是必要条件):
~支持 ECMA-262 中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
~支持 Unicode 字符标准。
此外,符合性实现还可以满足下列要求。
~增加 ECMA-262 中未提及的“额外的类型、值、对象、属性和函数”。ECMA-262 所说的这些额
外内容主要指规范中未给出的新对象或对象的新属性。
~支持 ECMA-262 中没有定义的“程序和正则表达式语法”(意思是允许修改和扩展内置的正则表
达式特性)。
6.DOM(文档对象模型)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,可以轻松地删除、添加、替换、修改节点。
7.万维网联盟(W3C,World Wide WebConsortium)开始了制定 DOM 标准
IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗
口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是
问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。HTML5 改变了这个局面,这个版
本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM
有关的问题都迎刃而解了。
总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的
扩展都归在 BOM 的范畴内。比如,下面就是这样一些扩展:
弹出新浏览器窗口的能力;
移动、缩放和关闭浏览器窗口的能力;
navigator 对象,提供关于浏览器的详尽信息;
location 对象,提供浏览器加载页面的详尽信息;1.3 JavaScript 版本
screen 对象,提供关于用户屏幕分辨率的详尽信息;
performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
对 cookie 的支持;
其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject。
因为在很长时间内都没有标准,所以每个浏览器实现的都是自己的 BOM。有一些所谓的事实标准,
比如对于 window 对象和 navigator 对象,每个浏览器都会给它们定义自己的属性和方法。现在有了
HTML5,BOM 的实现细节应该会日趋一致。关于 BOM,本书会在第 12 章再专门详细介绍。
总结:这章主要是了解JavaScript的诞生历史和DOM、BOM的概念,那个时候网页开发非常的不统一很乱,于是为了统一而产生了许多的标准:ECMAscript、DOM标准到后来的BOM的html5日趋一致。