从0学习JavaScript高级程序设计(第四版)

121 阅读5分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

什么是JavaScript?

我们要学习JavaScript,首先要了解什么是JavaScript,它的主要用途是什么。

javascript创建初期,只是为了代替perl等服务器端语言的输入验证,也就是现在咱们的表单验证,那个时候没有JavaScript,每次输入都需要一次服务器往返通讯。

尤其是在当时龟速的网速,简直是挑战人们的耐心,所以JavaScript应运而生。

现在的JavaScript自然不再像最开始的时候只是单纯的表单验证,也已经成为了公认的主流语言,也能够实现复杂的计算机交互等功能性任务。从JavaScript语言的崛起

我们不难看出,不管是语言还是个人,只要能深扎进入自己的领域,哪怕会被人看不起,早晚有一天也会有属于自己的一片天地, 仅此献给我自己和所有有志于为了自己的

坚持而不懈奋斗的人们。

JavaScript实现

一个完整的JavaScript实现包含三个部分

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)
  1. ECMAScript

ECMAScript,即ECMA-262定义的语言,它并不局限于web浏览器。web浏览器只是其可能存在的一种宿主环境。宿主环境提供ECMAScript的基准实现和与环境自身交互必须的扩展。

如果不涉及浏览器的话,ECMA-262在基本层面,它描述了这门语言的如下部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象
  1. ECMAScript

    1. 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 子句的可选绑定。

    2. 目前主流浏览器对ECMAScript的兼容性

      Edge12+——————————第6版

      Opera 36+—————————第6版

      Safari 9+——————————第6版

      iOS Safari 9.2+ ———————第6版

      Chrome 42~48———————第6版(部分)

      Chrome 49+————————-第6版

      Firefox 45+ —————————第6版

  2. 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,新增了以统一的方法加载和保存文档的方法,验证文档的方法。

  3. 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之内。

下面我们就正式进入学习部分了,我按照大圣老师的分类方法,把整书分成了这几部分。

  1. 基础内容

    第2章,HTML中的JavaScript