Chapter 0 前言
1、JavaScript简史
1994年网景发布了Navigator浏览器,由于当时的网页缺乏交互能力,因此网景急需一种脚本语言为网页添加交互,但究竟用什么语言,一时难以定夺。然而第二年Sun发布了Java,其席卷天下的态势,促使网景做出抱大腿的决定,网景与Sun结盟之后,Sun完全介入了脚本语言开发的决策。
最终,网景决定开发一款仿照Java的简化版语言,并将任务指派给Brendan Eich,然而这家伙对Java毫无兴趣,为了应付交差,他只用了两周时间就把JavaScript设计出来了。
他的基本设计思路是:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
多方决策的综合使得JavaScript成为了一个杂交的产物。
1996年,微软终于意识到了互联网的重要价值,因而加大了对自家浏览器IE的支持,其中就包括JScript,于是一时间市场上存在两个不同的JavaScript版本。这一历史渊源预示了后来的程序员为处理兼容性问题而遭受的无尽的痛苦。
终于在1997年,欧洲计算机制造商协会(ECMA)制定了JavaScript的标准ECMA-262(又名ECMAScript),各个浏览器厂商也开始以该标准作为自家浏览器脚本的实现基础。
ECMAScript到目前为止,共发布了6版,(2009年发布第五版,2016年发布第六版)。
参考:http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html
2、在HTML中使用JavaScript
2.1 外部脚本
<script type ="text/javascript" src ="url"></script>
除了type和src,该标签还有其它的属性,如:
async ="async" 异步脚本。表示立即下载脚本,但不要阻塞其它操作。
defer ="defer" 延迟脚本。表示立即下载,但直到整个文档解析完毕后再执行脚本。针对外部脚本。
引号中既可以是相对路径,也可以是绝对路径。
在没有设置async或defer的情况下,浏览器按script的排列顺序进行解析。
至于<script>的位置,现代前端的做法是将其置于</body>前。
2.2 嵌入式脚本
直接在<script></script>标签中编写脚本。
3、JavaScript知识体系与本系列的目录结构
本系列是对JS两大权威书籍《JavaScript高级程序设计(第3版)》(简称《高级》)和《JavaScript权威指南(第6版)》(简称《权威》)以及其它资料的提炼、梳理和总结。
本系列会经常采用英文批注,增加表意的明确性。
JavaScript知识版图 |
Language |
ECMAScript |
Client-side |
BOM |
|
DOM |
||
Others |
||
Transmition |
Ajax、JSON |
|
Server-side |
Node … |
JavaScript纵向生态 |
应用层 |
交互逻辑 |
组件层 |
定制组件 |
|
通用组件,如Datepicker … |
||
框架层 |
jQuery、Angular、React … |
|
核心层 |
原生js和底层API |
语言 |
|
第零章:前言 |
JavaScript简史、JavaScript知识体系 |
第一章:语法 |
语法简述 |
第二章:值与变量 |
六种类型的值、类型转换、变量简述 |
第三章:操作符与表达式 |
各类操作符、各类表达式 |
第四章:语句 |
条件、循环 |
第五章:函数 |
函数简析、作用域、闭包、this对象、递归等 |
第六章:对象 |
对象简述、各类JavaScript预设对象的属性及方法 |
第七章:面向对象编程 |
各类创建对象的方法、对象间的继承 |
客户端 |
|
第八章:BOM |
各类BOM对象的属性和方法 |
第九章:DOM |
各类DOM对象的属性和方法、事件、表单脚本等 |
第十章:其它客户端技术 |
客户端检测、安全、储存、JS执行原理等 |
传输 |
|
第十一章:数据传输 |
Ajax、Json等 |
服务端 |
|
第十二章:服务端脚本 |
Node等 |
其它 |
|
第十三章:正则表达式 |
规则、使用方法 |
第十四章:模块化 |
模块化思想及其技术演进过程 |
第十五章:图形 |
Canvas、SVG等 |
第十六章:ES6的新东西 |
新的知识点 |