Preface 前言
第一次接触JavaScript时的场景现在已经记不清了,不过因为有其他语言的基础,我很快就上手了。当时感觉JavaScript就是一门不需要专门去学的语言,太简单了!
但是,随着使用的深入,才逐渐发现事实并非如此。JavaScript既不像C语言这类面向过程的语言,也不像C++、Java这类面向对象的语言。JavaScript中有些概念虽然在其他语言(这里主要指C、C++和Java)里也有,但是含义却不尽相同,而且JavaScript中还有很多其他语言所没有的用法和概念。例如,在函数体中还可以再定义另外一个函数,函数也是对象,而且有个特殊的prototype属性,另外也可以使用函数创建对象,以及由此引出的闭包、参数作用域链和琢磨不透的this指针等,后来感觉越用越不明白了。
随着近几年B/S结构的快速发展,JavaScript已经成了一门不可或缺的语言。GitHub在2015年8月20日发布的统计数据显示,JavaScript是现在最受欢迎的语言。另一篇开源中国社区的文章更是指出,在所有stars超过10000个的仓库中,基于JavaScript开发的仓库占到55.7%!
既然离不开那就将其弄明白。经过一段时间的努力终于将其弄清楚了,而且也明白了其背后的实现原理。既然花费了不少精力,那么何不让更多的人受益,以使自己的付出更有意义呢。于是就有了大家手中的这本书。
本书的目标是帮助读者理解JavaScript的各种语法及底层的实现原理,进而灵活使用其所提供的内在对象,所以本书并不是针对零基础的读者。如果您要阅读本书,至少需要使用过JavaScript,如果同时还使用过C/C++或者Java就更好了。
本书特点
❑系统:全书采用了总分总的结构。首先整体介绍了JavaScript、ECMAScript、DOM、BOM和HTML5之间的关系,然后依次对每一项内容进行讲解,最后进行总结。全书系统介绍了JavaScript的内部结构;提出了将JavaScript分为两种对象的思维方式;深入分析JavaScript中各种属性和变量的关系;系统阐述DOM及其节点的结构;深入分析了HTML5中6种新增内容的使用方法。
❑全面:全面包含整体和细节两个方面。从整体来说,包含JavaScript基础、ECMAScript 2015、DOM、BOM和HTML5这5个部分,几乎涵盖了JavaScript的所有相关知识。细节指每一部分内容的全面性,例如,JavaScript基础里涵盖了this指针、变量作用域、prototype继承、闭包、对象与对象之间的关系等比较容易出错的内容,ECMAScript 2015(ECMAScript 6)中介绍了绝大部分新增的内容,而HTML5部分几乎对所介绍的每种功能都讲解了其所包含的全部方法和属性。
❑深入:本书并不仅仅给大家介绍JavaScript中的各种语法,还说明了底层的实现原理,以及使用中需要注意的地方。另外,对于读者可能不熟悉的内容(例如,数据库、多线程等)会先介绍相关的概念,然后介绍JavaScript中的操作方法。
❑通俗易懂:本书尽量使用通俗易懂的文字给大家介绍相关知识,避免因为一些专有名词而给大家造成理解上的困难,对于不容易理解的地方还会通过比喻或举例来帮助大家理解。
本书结构
本书一共分为5篇。
第一篇整体介绍JavaScript的结构,以及与ECMAScript、DOM、BOM、HTML5的关系,另外还对ECMAScript的语法及背后的原理进行了系统讲解。
第二篇系统介绍ECMAScript 2015中新增的内容。
第三篇介绍DOM的结构及其所包含的各种子标准。
第四篇介绍BOM中的4个对象。
第五篇介绍HTML5中的6种实用功能,并对全书进行总结。
致谢
本书的整个编写过程都离不开父亲韩志荣的支持和在背后的默默付出,这种感谢是无法言表的。另外,还要感谢清华大学出版社的秦健编辑以及他所在的团队,如果没有他们的支持和付出,本书也不可能跟大家顺利见面。
写书并不像看书那么简单,虽然笔者已经尽力了,但是由于精力和能力的原因难免还会存在表述不准确甚至不正确的地方,还请大家不吝批评指正。