「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
什么是JavaScript?
我们要学习JavaScript,首先要了解什么是JavaScript,它的主要用途是什么。
javascript创建初期,只是为了代替perl等服务器端语言的输入验证,也就是现在咱们的表单验证,那个时候没有JavaScript,每次输入都需要一次服务器往返通讯。
尤其是在当时龟速的网速,简直是挑战人们的耐心,所以JavaScript应运而生。
现在的JavaScript自然不再像最开始的时候只是单纯的表单验证,也已经成为了公认的主流语言,也能够实现复杂的计算机交互等功能性任务。从JavaScript语言的崛起
我们不难看出,不管是语言还是个人,只要能深扎进入自己的领域,哪怕会被人看不起,早晚有一天也会有属于自己的一片天地, 仅此献给我自己和所有有志于为了自己的
坚持而不懈奋斗的人们。
JavaScript实现
一个完整的JavaScript实现包含三个部分
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
- ECMAScript
ECMAScript,即ECMA-262定义的语言,它并不局限于web浏览器。web浏览器只是其可能存在的一种宿主环境。宿主环境提供ECMAScript的基准实现和与环境自身交互必须的扩展。
如果不涉及浏览器的话,ECMA-262在基本层面,它描述了这门语言的如下部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
-
ECMAScript
-
ECMAScript版本
ECMAScript的不同版本用“deition”表示。最近的版本是第10版。发布于2019年6月。
其中第六版,俗称ES6、ES2015或者ES Harmony(和谐版),于2015年6月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
ECMA-262 第 7 版,也称为 ES7 或 ES2016,于 2016 年 6 月发布。这次修订只包含少量语法层面的增强,如 Array.prototype.includes 和指数操作符。
ECMA-262 第 8 版,也称为 ES8、ES2017,完成于 2017 年 6 月。这一版主要增加了异步函数(async/await)、SharedArrayBuffer 及 Atomics API,以及 Object.values()/Object.entries()/Object. getOwnPropertyDescriptors()和字符串填充方法,另外明确支持对象字面量最后的逗号。
ECMA-262 第 9 版,也称为 ES9、ES2018,发布于 2018 年 6 月。这次修订包括异步迭代、剩余和扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。
ECMA-262 第 10 版,也称为 ES10、ES2019,发布于 2019 年 6 月。这次修订增加了 Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方 法,以及 Symbol.prototype.description 属性,明确定义了 Function.prototype.toString() 的返回值并固定了 Array.prototype.sort()的顺序。另外,这次修订解决了与 JSON 字符串兼容的问题,并定义了 catch 子句的可选绑定。
-
目前主流浏览器对ECMAScript的兼容性
Edge12+——————————第6版
Opera 36+—————————第6版
Safari 9+——————————第6版
iOS Safari 9.2+ ———————第6版
Chrome 42~48———————第6版(部分)
Chrome 49+————————-第6版
Firefox 45+ —————————第6版
-
-
DOM
文档对象模型(DOM,document object model):是一个应用编程接口(API),用于在HTML中使用扩展XML。DOM将整个页面抽象分为一组分层节点。HTML或XML页面的每个组成部分都是一种节点,包含不同的数据。
DOM通过创建表示文档的树,让我们可以随意控制整个页面,通过使用API达到增删改查的目的。
为了能统一web平台,创建了万维网联盟(W3C,world wide web comsortium)来制定DOM标准的进程。
DOM level2新增模块
- DOM视图:描述追踪文档不同视图的接口
- DOM事件:描述事件以及事件处理的接口
- DOM样式:描述处理元素CSS样式的接口
- DOM遍历和范围:描述遍历和操作DOM树的接口
DOM level3中又进一步扩展了DOM,新增了以统一的方法加载和保存文档的方法,验证文档的方法。
-
BOM
浏览器对象模型(BOM)API,用于支持访问和操作浏览器的窗口。BOM是可以操控浏览器显示页面之外的部分的。而在HTML5之前,它是一个没有相关标准的JavaScript实现。HTML5 的出现,使得HTML正式涵盖了尽可能多的BOM特性。
BOM实际上是针对浏览器窗口和子窗口。但是通常把任何特定于浏览器的扩展都贵在BOM之内:
- 弹出新浏览器窗口的能力
- 移动、缩放和关闭浏览器的能力
- navigator对象,提供关于浏览器的详尽信息
- location对象,提供浏览器加载页面的详尽信息
- screen对象,提供关于用户屏幕分辨率的详尽信息
- performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息
- 对cookie的支持
- 其它自定义对象,如XMLHttpRequest和IE的ActiveXObject
总结:
- JavaScript包含三个部分,ECMAScript,DOM,BOM
- ES6正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型
- DOM将整个页面抽象分为一组分层节点
- 任何特定于浏览器的扩展都贵在BOM之内。
下面我们就正式进入学习部分了,我按照大圣老师的分类方法,把整书分成了这几部分。

-
基础内容