深入理解红宝书(1)| 8月更文挑战

394 阅读5分钟

红宝书.image

相信码农同学们一定非常了解“红宝书”系列书籍了,但是我相信大多数人还是没有从头到尾的细致的读一遍这一系列书籍,毕竟无论是纸质书还是PDF的电子书,对我们的吸引远远不如视频来的强烈,尤其是刚开始就是从视频学习代码的人;而且习惯了看文章、看视频学习的人更难沉下心来细读这么厚的书籍。

借着这个8月的更文挑战,和大家一起看一看这本书里具体隐藏了哪些宝藏!

本文借鉴了大圣老师的“前端红宝书训练营”推荐的读书顺序,能够帮助我们更好的循序渐进

第1章 什么是JavaScript

1、简短的历史回顾

上世纪九十年代,国外互联网兴起,伴随着web的日益流行,web服务器的压力越来越大,为了缓解网页大量数据与低网速的冲突,网景公司决定开发一个客户端脚本语言来处理网页的简单验证。

1995年,网景公司以为名叫Brendan Eich的工程师,开发了一个叫Mocha(后来改名叫LiveScript)的脚本语言。当时计划是在客户端和服务端都使用它,它在服务器端叫LiveWire(当然现在已经实现了,后端叫node)。

当时单个公司的研发进度比较慢,为了能够赶上新产品的发布,网景和sun公司结成开发联盟,共同完成LiveScript的开发。在上线之前,为了蹭当时Java语言的热度,网景公司把LiveScript改名为现在的JavaScript(蹭热度啥时候都流行啊)。

JavaScript1.0取得了巨大成功,网景随后又在新产品Netscape navigator3.0中发布1.1版本,web的受欢迎程度达到了当时的历史高峰

24cb-iyhvyva2642119.gif

就在Netscape navigator3.0发布后不久,一位历史级大佬进场,就是万恶的微软IE。微软发布了IE3,这不仅是网景公司永远的痛,也是后来我们无数前端人员为之蛋疼的地方,就是IE的兼容性。因为IE3中包含了微软团队的JScript(这个名字很完美的避开了和网景公司的许可纠纷)的JavaScript实现。

后来很长一段时间,微软和网景两家公司的JavaScript实现的标准不同,随即出现了ECMAScript标准,读音为“艾克马”script(现实中看了很多视频教学基本上都是叫ecma,字母读音)。这个语言是欧洲计算机制造商协会,在1997年来自网景、sun、微软、Borland、Nombas和其他对JavaScript感兴趣的公司。自此,各家公司都照着ECMAScript的标准来开发JavaScript语言,只在一部分上不同。

2、JavaScript实现

虽然 JavaScript和 ECMAScript 基本上是同义词,但 JavaScript远远不限于 ECMA-262 所定义的那样。 没错,完整的 JavaScript 实现包含以下几个部分:

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

2.1DOM

文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在HTML中使用扩展的XML。DOM 将整个页面抽象为一组分层节点。HTML或XML页面的每个组成部分都是一种节点,包含不同的数据。比如下面的HTML页面:

<html>
    <head>
        <title>
            Sample Page
        </title>
    </head>
    <body>
        <p> Hello World!</p>
    </body>
</html>

这些代码可以通过DOM可以表示为一组分节点,如图

image.png

DOM通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用DOM API,可以轻松地删除、添加、替换、修改节点。

2.2BOM

IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗 口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是 问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。HTML5 改变了这个局面,这个版 本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM 有关的问题都迎刃而解了。

总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的 扩展都归在 BOM 的范畴内。比如,下面就是这样一些扩展:

  • 弹出新浏览器窗口的能力
  • 移动、缩放和关闭浏览器窗口的能力
  • navigator对象,提供关于浏览器的详尽信息
  • location对象,提供浏览器加载页面的详尽信息
  • screen对象,提供关于用户屏幕分辨率的详尽信息
  • performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
  • 对cookie的支持
  • 其他自定义对象,如XMLHttpRequest和IE的ActiveXObject

因为在很长时间内没有统一的标准,每个浏览器都有自己的BOM,这就使开发人员很痛苦的去做适配(一想想就发毛!!)

本章总结

JavaScript是一门用来与网页交互的脚本语言,包含以下三个组成部分

  1. ECMAScript:由ECMA-262定义并提供核心功能
  2. 文档对象模型(DOM):提供与网页内容交互的方法和接口
  3. 浏览器对象模型(BOM):提供与浏览器交互的方法和接口

我一直认为只有把基础打好,才能提高我们的上限,在学习JavaScript这门语言的时候,千万不能止步于简单的数据操作,数组、对象、类等都是我们的工具,我们要尽可能的理解原理,才能更好的运用工具。