《JavaScript高级程序设计》第一章笔记

开篇以前

这一系列的文章主要是以读书笔记的形式,记录学习《JavaScript高级程序设计》一书的学习心得和总结。
对于阅读和学习本书的最初想法,来源于一次失败的国内IT公司前端岗位面试。准备面试和实际面试的过程中深刻的意识到了自己对前端知识了解的肤浅和松散。之前零散的记忆和学习也没有真正帮助到了解前端工作内容重心和核心技术。面试官推荐了这本书作为学习资料,并推荐了看书作为学习方法。由此将其确定为近期学习和准备面试的主要内容和方向。即使面试过程和结果都很不尽人意,仍然十分感谢面试官的指点。我想这对于我接下来的职业发展和个人提升,有非常重大的帮助和意义。
以此作为前端之路的起点。

介绍

第一章主要介绍了JavaScript的历史,演化过程,以及一些重要概念入ECMAScriptDOM以及BOM

JavaScript历史

最初在有JavaScript之前,人们并不能真正意义上的和前端有任何交互。即使是简单的提交表单(form)也需要在服务器端(server)端进行内容判定再等待结果返回。在拨号上网年代十分耗费时间。因此NetScape公司开始编写一种在客户端可以执行的语言来辅助功能的完成。起初命名为Mocha,之后改为ViewScript。在发表之前因Java的大热而定名JavaScript,蹭蹭热度哈哈哈。
JavaScript1.0是一个很大的成功,之后微软也为其开发的浏览器IE写了类似的语言名为JScript。两种语言都只能在各自的浏览器中运行,可想而知引发了一些麻烦。之后ECMA(European Computer Manufacturers Association)成立了一个,由各大浏览器所属公司的程序员组成的小组,对JavaScript的语法做出了标准化的规范,称之ECMA-262,而在其之上定义了一种脚本语言ECMAScript。
JavaScript的实现是基于三点,ECMAScriptDOM以及BOM

ECMAScript

ECMAScript并不基于浏览器,同时也没有关于输入输出的定义。简单来说我理解ECMAScript是一个实现了ECMA-262标准的,并不在于真的拿来写程序的这样一种语言。但是基于ECMAScript,可以实现具体的,可用的编程语言,JavaScript也只是其中的一种。同时,实现了ECMAScript的语言能够执行的环境也不只是浏览器,Adobe Flash也是其中之一。

ECMA-262规定的内容

  1. 语法(Syntax)
  2. 类型(Type)
  3. 语句(Statement)
  4. 关键字(Keywords)
  5. 保留字(Reserved words)
  6. 操作符(Operators)
  7. 对象(Objects)

ECMAScript2016 & ECMAScript2016

[TODO]ECMAScript2015,16新增特性
http://kangax.github.io/compat-table/es6/

ECMAScript的兼容

一个语言要称实现了ECMAScript,需要达到以下几点要求:

  • 支持“ECMA-262”所定义的所有“类型,值,对象,属性,函数以及程序句法和语义”。
  • 支持Unicode。

但是实现ECMAScript的语言被允许做以下的操作:

  • 添加ECMA-262中没有定义的类以及类的新属性。
  • 修改或者扩展内置的程序正则表达式的语法。
    由此,其实ECMAScript的实现是给予了充分的弹性和空间。

DOM(Document Object Model)

DOM是一种针对XML,现用于HTML的API,其功能是把页面映射为多层节点结构。基于这样的树形结构,DOM提供的API可以实现对节点的,增删改操作。
DOM作为JavaScript的一部分,其实实际上,是在浏览器中实现ECMAScript的一个扩展。也有别的语言实现了自己的DOM。

BOM(Browser Object Model)

如果说DOM帮助程序员使用程序控制页面上的布局和节点,那么BOM就是帮助程序员用程序控制浏览器的部分功能,例如弹出窗口,缩放,提供分辨率信息等等。