介绍

JavaScript高级程序设计 第四版,在第三版的根底上增加了ES6相干的内容。如letconst关键字,Fetch API、工作者线程、模块、Promise 等。适宜具备肯定编程教训的 Web 利用开发人员浏览。

上面介绍一下各章节的知识点。

第1章 JavaScript概述

这章节次要解说JavaScript历史回顾,它是在1995年由网景公司的 Brendan Eich 工程师开发的 JavaScript 1.0,1997 年,JavaScript 1.1 作为提案提交给 Ecma。TC39 实现了语言标准化 ECMA-262,即 ECMAScript 新的脚本语言规范。1998 年,ISO 和 IEC 也驳回了 ECMAScript 规范。至此当前,ECMAScript就作为 JavaScript 实现的规范。

JavaScript 实现蕴含 ECMAScriptDOMBOM 三局部。

第2章 HTML中的JavaScript

这章节次要讲述应用 <script> 标签将 JavaScript 引入 HTML 中,也能够应用 <noscript> 标签用于浏览器不反对脚本或脚本反对被敞开的状况,还有 deferasync 两个属性用于提早脚本执行和无需期待其它脚本。

第3章 语言根底

这章节讲述了JavaScript的语言根底,任何语言的外围都是描述语言在最根本层面上如何工作,其中会波及语法、操作符、数据类型及内置性能,在此基础上能力构建简单的解决方案。

第4章 变量、作用域与内存

这章节次要是讲述JavaScript变量的两种类型的值:原始值和援用值。在这其中原始值有6中Undefined/Null/Boolean/Number/String/Symbol和原始值的特点。变量的作用域决定了变量的生命周期。JavaScript也是应用垃圾回收的编程语言,不须要操心内存调配和回收。

第5章 根本援用类型

这章节介绍JavaScript中的对象称为援用值,所有援用类型都继承自Object。讲述了几种援用类型的作用和 API,还有三种相较于原始值的包装类型:Boolean/Number/String的介绍和特点。代码开始执行时,全局上下文会存在GlobalMath 两个内置对象。

第6章 汇合援用类型

这章节介绍了几种 ECMAScript 6 中新增的几种援用类型:Map/WeakMap/Set/WeakSet。应用这些类型能够简化应用程序的编写和内存治理的新性能。

第7章 迭代器与生成器

ECMAScript 6 反对迭代模式并引入了迭代器和生成器两种语言个性。迭代器是一个能够由任意对象实现的接口,反对持续获取对象产出的每一个值。任何实现 Iterable 接口的对象都有一个 Symbol.iterator 属性,这个属性援用默认迭代器。默认迭代器就像一个迭代器工厂,也就是一个函数,调用之后会产生一个实现 Iterator 接口的对象。生成器是一种非凡的函数,调用之后会返回一个生成器对象。生成器对象实现了 Iterable 接口,并反对 yield 关键字,这个关键字可能暂停执行生成器函数。

第8章 对象、类与面向对象编程

本章节次要介绍对象的概念、Object类的创立工厂模式/构造函数模式/原型模式/对象迭代和JavaScript实现继承的形式原型链/盗用构造函数/组合函数/原型式继承/寄生式继承/寄生式组合继承,还介绍了 ECMAScript 6 中新增的类,其实就是基于原型机制的语法糖。但类的语法能够很优雅地定义向后兼容的类,既能够继承内置类型,也能够继承自定义类型。类无效地逾越了对象实例、对象原型和对象类之间的鸿沟。

第9章 代理与反射

ECMAScript 6 新增的代理和反射为开发者提供了拦挡并向基本操作嵌入额定行为的能力。代理只管不反对向后兼容,但它是实在JavaScript对象的通明形象层。能够定义蕴含捕捉器的处理程序对象,而捕捉器能够拦挡绝大部分 JavaScript 的基本操作和办法。在这个捕捉器处理程序汇总,能够批改任何基本操作的行为,前提是听从捕捉器不变式。而反射 API,则封装了一整套与捕捉器拦挡的操作绝对的办法。能够把反射 API 看作一套基本操作,这些操作是绝大部分 JavaScript 对象 API的根底。

代理的利用场景:跟踪属性拜访、暗藏属性、组织批改或删除属性、函数参数验证、结构函数参数验证、数据绑定、以及可察看对象。

第10章 函数

函数是 JavaScript 编程中最有用的工具。在 ECMAScript 6 中更是新增了许多弱小的语法个性。

  • 函数表达式与匿名函数。
  • ES6 新增的箭头函数语法、扩大操作符,能够实现函数定义和调用的齐全动态化。
  • JavaScript 引擎优化合乎尾调用条件的函数,节俭栈空间等等。

第11章 期约与异步函数

ECMAScript 6 及当前的几个版本逐渐加大了对异步编程机制的反对,新增的期约(Promise)和asyncawait关键字,实现了异步编程和定义异步函数的机制。

期约的次要性能是为异步代码提供清晰的形象。能够用期约示意异步执行的代码块,也能够示意异步计算的值。在须要串行异步代码时最为突出。期约能够被序列化、连锁应用、复合、扩大和重组。异步函数能够说是古代 JavaScript 中的最重要的工具之一。

第12章 BOM

BOM是指浏览器对象模型,用于示意浏览器窗口和页面可见区域的。最要有 window/location/navigator/screen/history几种示意窗口区域的对象。

第13章 客户端检测

客户端检测是 JavaScript 中争议最多的话题之一。因为不同浏览器之间存在差别,所以常常须要依据浏览器的能力来编写不同的代码。客户端检测有不少形式,但上面两种用的最多。

  • 能力检测。又称个性检测,即在运行时检测浏览器是否反对某种个性的检测逻辑。
  • 用户代理检测。通过用户代理字符串确定应用的浏览器。
  • 软硬件检测。通过BOM中的一些对象获取操作系统与硬件信息。

第14~16章 DOM

这三章次要解说DOM模型、DOM Level、节点层级及 Node 类型,和 Selectors API 用来依据 CSS 选择符匹配 DOM 元素,DOM中的元素遍历,和HTML 与 DOM 交互的外围 API,在HTML5中也提供了DOM扩大,DOM2 和 DOM3 是在 DOM1 的根底上增加了更多的交互能力及更高级的XML个性。

第17章 事件

JavaScript 与 HTML 的交互是通过事件实现的,而事件中的事件流分为事件冒泡和事件捕捉,DOM想要实现事件就须要与事件进行绑定,而事件绑定分为HTML/DOM0/DOM2/IE几种,而产生的事件次要有 UIEvent/FocusEvent/MouseEvent/WheelEvent/InputEvent/KeyboardEvent/CompositionEvent等几种类型,还有一些类型这里没有列举。能够应用事件委托和事件移除来缩小内存耗费和提供性能。事件是 JavaScript 中最重要的主题之一,了解事件的原理及其对性能的影响十分重要。

第18章 动画与 Canvas 图形

本章次要介绍前端绘图和动画的技术,次要是 HTML5 中的 <canvas> 元素提供了动态创建创立图形的 API。这种次要是绘制 2D 图形。而 3D 绘图就需应用 WebGL 技术,它是对 OpenGL ES 2.0 的实现。

第19章 表单脚本

本章次要介绍了HTML 中 <form><select><option><input><textarea>等元素的应用和富文本编辑。

第20章 JavaScript API

本章次要介绍 JavaScript 中比拟重要的几种 API,如Atomics/SharedArrayBuffer/Encoding API/File API/Blob API/<audio>/<video>/Notifications API/Page Visibility等几种较为重要的API。

第21章 错误处理与调试

本章介绍了JavaScript中应用 try/catchthrow 语句来解决浏览器谬误和一些谬误类型,支流浏览器也提供了向用户报告谬误的机制。

第22~23章 XML/JSON

这两章次要介绍了JavaScript解决XML和JSON两种数据格式,而当初应用较多的是JSON格局,因为它是轻量级的、能够较不便地示意简单数据结构。在ECMAScript 5中定义了原生 JSON 对象,用于将JavaScript对象序列化为 JSON 字符串,以及将JSON数组解析为JavaScript对象。而DOM2中为XML实现了两个类型:

  • DOMParser 类型将 XML 字符串解析为 DOM 文档。
  • XMLSerializer 类型执行相同操作,将 DOM 文档序列化为 XML 字符串。

DOM3 新增了 XPath API 的标准,能够让JavaScript针对DOM文档执行任何XPath查问并失去不同数据类型的后果。

第24章 网络申请与近程调用

本章介绍了Ajax技术和实现Ajax的XMLHttpRequest对象,这个对象最早由微软创造并在IE5中引入。之后其余浏览器都复刻了该技术。W3C也在之后将XMLHttpRequest退出Web规范。其中也讲述了进度事件。

XMLHttpRequest次要限度是同源策略,拜访超出限度之外的资源会导致平安谬误,触发应用正式跨域计划CORS,XMLHttpRequest原生反对CORS。图片探测和JSONP是另两种跨域通信技术,但没有CORS牢靠。

Fetch API 是作为对 XMLHttpRequest对象的一种端到端的代替计划而提出的。这个 API 提供了优良的基于期约的构造、更间接的接口,以及对Stream API 的最好反对。

还有 Web Socket、与服务器全双工、双向通信。但须要专用的服务器,速度劣势显著。

第25章 客户端存储

本章次要讲述了将数据保留在客户的机器上的存储形式,次要有cookie/Web Storage/IndexedDB

Web Storage定义了sessionStorage/localStorage两个对象存储数据。而IndexedDB是相似SQL数据库构造的数据化数据存储机制,但IndexedDB存储的是对象,能够定义键来增加数据,而索引针对特定属性实现更快查问。但因为这些数据没加密,因而要留神别存储敏感信息。

第26章 模块

本章介绍了模块模式,它是治理复杂性的永恒工具。分为ES6之前的模块模式和ES6之后的模块模式,在ES6之前,CommonJS和AMD两种实现模块的形式,但它们编写的代码会在很多方面不统一,常常会带有冗余的样板代码。而ES6之后从新定义了浏览器模块,集两个零碎之长于一身,并通过更简略的申明性语法裸露进去。

第27章 工作者线程

本章介绍工作者线程的概念和实现,而工作者线程次要分为:专用工作者线程、共享工作者线程和服务工作者线程。古代浏览器都反对它们。它们非常适合简单计算和数据处理,特地是须要花较长时间因此会影响用户应用网页的解决工作。

第28章 最佳实际

本章次要介绍一些编码习惯、涣散耦合和编码常规来保障JavaScript代码的可维护性,一些能够进步性能的形式还有部署:构建的过程、验证、压缩。

如想获取本资源请按以下步骤操作:

  1. 辨认二维码并关注公众号 「海人的博客」
  2. 在公众号后盾回复关键字 「7913」