首页>参考读物>计算机科学与技术>软件与程序设计

JavaScript编程精解
作者 : (美)Marijn Haverbeke 著
译者 : 徐涛 译
丛书名 : 华章程序员书库
出版日期 : 2012-09-25
ISBN : 978-7-111-39665-9
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 176
开本 : 16
原书名 : Eloquent JavaScript: A Modern Introduction to Programming
原出版社: No Starch Press
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是被JavaScript之父Brendan Eich称为编程原理与规则运用完美融合的图书。本书是一部优秀的、注重实践的JavaScript教程,通过游戏式的章节安排,在一个又一个完整且连贯的故事中由浅入深地介绍了JavaScript的编程实践。这是一部具有很强实操性的JavaScript图书,第1~3章概览了JavaScript编程语言,包括它的语法、良好的编码习惯、控制结构、函数和数据结构等,教你写出简单的程序。在基本了解编程的基础上,通过4章的内容讨论了更高级的技术,教会编写更复杂、更有序的程序。第4章讨论了如何处理错误和意想不到的情况;第5章和第6章分析了两个主要的抽象方式:函数式编程和面向对象编程;第7章提供了一些关于如何组织程序的指导。其余章节重点关注了JavaScript环境中可用的工具。第8章介绍了一种文字处理的子语言;第9~12章讲述当程序在浏览器内部运行时可利用的工具,教你如何控制网页、应对用户的操作,并与Web服务器通信。

图书特色

编程原理与运用规则的简练、完美融合。我喜欢游戏式的程序开发教程,本书再次点燃了我学习编程的热情。对了,是JavaScript!
—— Brendan Eich JavaScript之父

因为这本书,我成为了更棒的架构师、作家、咨询师和开发者。
—— Angus Croll Twitter开发者

如果你决定只买一本有关JavaScript的书,那么就应是Marijn Haverbeke的这本书。
—— Joeyde Villa GlobalNerdy

本书不仅是学习JavaScript最棒的教材之一,而且是通过学习JavaScript进而学习现代编程的优秀图书。当有人问我如何学好JavaScript时,我会推荐这本书。
—— Chris Williams 美国JSConf的组织者

我读过的最棒的JavaScript书籍之一。
—— Rey Bango 微软Client-Web社区项目经理和jQuery团队成员

这本书不仅是一本非常不错的JavaScript指导书,而且是一本很棒的编程指导书。
—— Ben Nadel Epicenter咨询公司首席软件工程师

这本书对编程基本原理的详述以及对栈和环境等概念的解释非常到位。注重细节使本书从其他的JavaScript书中脱颖而出。
—— Designorati


作者简介




Marijn Haverbeke 世界级JavaScript程序员,通晓多种编程语言,在Web开发方面积累了丰富的经验,在JavaScript领域颇有影响力。如今,他专注于动态语言下的数据库系统的研究和Web API的设计。此外,他创建并维护着多个流行的开源项目。

译者简介




徐涛(网名:汤姆大叔),微软最有价值专家(MVP)、项目经理、软件架构师,擅长大型互联网产品的架构与设计,崇尚敏捷开发模式,熟悉设计模式、前端技术以及各种开源产品,曾获MCP、MCSE、MCDBA、MCTS、MCITP、MCPD、PMP认证。
博客地址:http://www.cnblogs.com/TomXu

图书前言

20世纪70年代,业界首次推出个人计算机时,大多数计算机都内置一种简单的编程语言—通常是BASIC的变体,人与计算机之间的互动需要通过这种语言实现。这意味着,对天生喜欢钻研技术的人来说,从单纯使用计算机到编程的过渡非常容易。
  现在的计算机相比20世纪70年代的功能更加强大,价格也更加便宜,软件接口呈现的是使用鼠标操作的灵活图形界面,而不是语言界面。这使计算机更容易使用,总的来说,这是一个巨大的进步。然而,这也在计算机用户与编程世界之间制造了一个障碍—业余爱好者必须积极寻找自己的编程环境,而不是一打开电脑就呈现的环境。
  实质上,计算机系统仍然被各种编程语言控制。大多数的编程语言都比早期个人计算机中的BASIC语言更加先进。例如,本书的主题—JavaScript语言,就存在于每一款主流Web浏览器中。
关于编程
  不愤不启,不悱不发。举一隅不以三隅反,则不复也。
      —孔子
  本书除了介绍JavaScript外,也致力于介绍编程的基本原理。事实上,这种编程还是比较难的。编程的基本规则通常都简单明了,但计算机程序构建在这些基本规则之上后,会变得很复杂,产生了其自身的规则和复杂性。正因为如此,编程并不是那么简单或可预测的。正如计算机科学的鼻祖高德纳(Donald Knuth)所说,编程是一门艺术,而不是一门科学。
  要想从本书里获取最大收获,不能仅仅依靠被动阅读。一定要集中注意力去理解示例代码,只有确定自己真正理解了前面的内容,才能继续往下阅读。
  程序员对其创造的宇宙负全部责任,因为他们是创造者。以计算机程序的形式,可创造出无限复杂的宇宙。
      —Joseph Weizenbaum,《Computer Power and Human Reason》
  一个程序包含很多含义。它是程序员敲出的一串字符,是计算机运行的指向力,是计算机内存中的数据,还控制同一个内存上的执行动作。仅使用熟悉的类推法比较程序与对象往往还不够,因为从表面上看适合该操作的是机器。机械表的齿轮巧妙地啮合在一起,如果表的制造者技术很棒,它就能够连续多年准确地显示时间。计算机程序的元素也以类似的方式组合在一起,如果程序员知道自己在做什么,那么这个程序就能够正常运行而不会崩溃。
  计算机作为这些无形机器的载体而存在。计算机本身只会做简单直接的工作。它们之所以如此有用,是因为它们能够以惊人的速度完成这些工作。程序可以巧妙地把许多简单动作结合起来,去完成非常复杂的工作。
  对有些人来说,编写计算机程序是一种很有趣的游戏。程序是思想的构筑,它零成本、零重量,在我们的敲打中不断发展。如果我们不细心,它的规模和复杂性将失去控制,甚至创造者也会感到混乱。这就是编程的主要问题:控制好程序。程序在工作时是很不可思议的,编程的艺术就是控制复杂性的技巧,好的程序其复杂性也会降低。
  如今,很多程序员认为只要在程序中使用少量易于理解的技术,就可以最有效地降低复杂性。他们制定了严格的编程规则(最佳实践)及书写格式,那些破坏规则的人被称为“差劲”的程序员。
  丰富多彩的编程世界里包含了太多的复杂性!让我们努力将程序变得简单和可预测,并为所有奇妙和优美的程序制定禁忌规则。编程技术的前景是广阔的,其多样性使人着迷,它的世界仍有很多未被探索的部分。编程过程中有很多陷阱和圈套,缺乏经验的程序员会犯各类糟糕的错误,告诫我们需要谨慎,并保持头脑清醒。学习编程时总是需要探索新的挑战、新的领域,拒绝不断探索的程序员必定会停滞不前、忘记编程的快乐、并失去编程的意志(或成为管理人员)。
语言为何很重要
  在计算机诞生初期并没有编程语言。程序看起来就像这样:

  这是一个从1加到10并输出结果(1 + 2 +…+ 10 = 55)的程序。它可以在一个非常简单、理想化的计算机上运行。为早期的计算机编制程序时,必须在正确的位置设置一排排的开关或者在纸带上打上一系列有规律的孔点,这样才能将程序传递给计算机。可以想象这个过程有多么繁琐和易出错。即使编写简单的程序也需要使用很多脑力和规则,编写复杂的程序更是不可想象。
  当然,手动输入这些二进制位(即以上这些1和0的统称)的神秘组合,让程序员感觉自己像巫师一样拥有强大的魔力,而且还能够获得工作满足感,因此这点还是很值得的。
  程序的每一行都包含一条单独的指令。可以用语言这样描述:
  1)将数字0保存在第0个存储单元;
  2)将数字1保存在第1个存储单元;
  3)将第1个存储单元的值保存在第2个存储单元;
  4)将第2个存储单元中的值减去数字11;
  5)如果第2个存储单元中的值是数字0,则继续执行指令9;
  6)将第1个存储单元的值添加至第0个存储单元;
  7)将数字1添加至第1个存储单元;
  8)继续执行指令3;
  9)输出第0个存储单元的值。
  虽然这比二进制位易读,但仍然令人不快。用名称代替指令和存储单元的数字或许更有帮助。

  在这里不难看出程序是如何运行的。前两行代码为两个存储单元赋予初始值:total用于创建计算的结果,count记录当前看到的数字。使用compare的行可能是最令人费解的地方。该程序的目的是判断count是否等于11,从而确定能否停止运行。由于该机器相当原始,它只能测试一个数字是否为零,并在此基础上做出判断(跳转),因此它使用标记compare的存储单元来计算count的值,即11,并在该值的基础上做出判断。后面两行代码将count的值添加到结果total上,当程序判断count不是11时,为count加1。
  下面是用JavaScript编写的有同样效果的程序。

  这段程序有了更多的改进。最重要的是,不再需要指定程序来回转换的方式,while这个神奇的单词会帮助解决这个问题。只要满足给定的条件:count <= 10(意思是“count小于或等于10”),它就会继续执行下面几行代码。不再需要创建临时的值并将该值与零比较——这是一个没有意义的细节,编程语言就是用于解决这些无意义的细节。
  最后,如果我们可以使用方便的range和sum操作(分别在区间范围(range)里创建一组数字,并计算该组数字的总和(sum)),代码应该是这样的:
  从上例可以看出,同样的程序可以使用长或短、不可读或可读的方式来表达。该程序的第一个版本非常晦涩,而最后一个版本基本上都是语言描述:打印(print)出从1到10这个区间范围(range)的总和(sum)。(我们将在后面的章节中讲述如何创建sum及range等函数。)
  优秀的编程语言会提供一种更为抽象的表达方式来帮助程序员表达其意图。这种语言隐藏无意义的细节,提供方便的程序块(例如while语句),在很多时候,它允许程序员自己添加程序块(例如sum和range操作)。
什么是JavaScript
  JavaScript语言目前主要用于解决万维网页面的各种难题。近年来,该语言也开始应用于其他环境中,如node.js框架(一种使用JavaScript语言编写快速服务器端程序的方式),最近吸引了不少关注。如果对编程感兴趣,JavaScript绝对是值得学习的语言。即使以后不会从事大量的网络编程工作,本书中展示的一些程序也会一直伴随着你,影响你使用其他语言编写的程序。
  有些人指出了JavaScript语言不好的地方,其中很多观点都是对的。当我第一次用JavaScript写程序时,我立刻就开始轻视这种语言了,它接受我输入的大部分代码,但其解释代码的方式与我的意图完全不同。无可否认,这与我做事没有头绪有很大的关系,但也存在着一个真正的问题:JavaScript允许的操作实在是太多了。这种设计的初衷是让初学者更易掌握JavaScript编程方法。实际上,这使得更难发现程序中的问题,因为系统不会指出问题所在。
  然而,语言的灵活性也是一种优势。它为很多无法使用更强大语言的技术留下了发展空间,正如我们将在后面几章中看到的,它能够克服JavaScript的一些缺点。当正确学习JavaScript并使用了一段时间之后,我发现自己真正的喜欢上了这种语言。
  与这种语言的名字所暗示的不同,JavaScript与Java编程语言并没有多大关系。相似的名字是基于营销的考虑,而不是为了获得好评。网景公司于1995年推出JavaScript时,Java语言正在极力推广中,并且很受欢迎。很显然,当时有人认为借助Java语言的成功进行营销是个好主意。于是,就有了现在看到的这个名字。
  与JavaScript有关的是ECMAScript。当网景浏览器以外的浏览器开始支持JavaScript或类似语言时,出现了一份准确描述该语言应该如何工作的文档。此文档里所描述的语言称为ECMAScript,它是以制定该设计语言标准的欧洲计算机制造商协会(ECMA)的名称命名的。ECMAScript描述了一种多用途编程语言,但并没有提及它与Web浏览器的集成。
  现在有多个版本的JavaScript。本书讲的是ECMAScript 3版本,是第一个各种浏览器都支持的版本。在过去的几年中,人们进一步发展这种语言,但是,这些扩展版本只有受到浏览器的广泛支持才是有用的(至少在网络编程方面),而浏览器要跟上编程语言的发展也需要很长一段时间。幸运的是,新版本的JavaScript基本上是ECMAScript 3的扩展版本,因此本书中的大部分内容都不会过时。
试运行程序
  如果想要执行并练习本书中的代码,一种方法是可以登录http://eloquentjavascript.net/,使用该网站提供的工具。
  另一种方法是创建一个包含该程序的HTML文件,并将其加载到浏览器中。例如,可以创建一个名为test.html的文件,内容如下。

  后面的章节将讲述更多有关HTML的知识以及浏览器解释HTML的方式。请注意,示例中的print操作已被替换为document.write。我们将在第10章中介绍如何创建print函数。
本书主要内容
  本书前3章介绍了JavaScript语言,并指导如何编写语法正确的JavaScript程序,还介绍了控制结构(如在前面看到的while关键词)、函数(自己编写的操作)和数据结构。这些内容可以指导编写简单的程序。
  在基本了解了编程的基础上,后面4章将讨论更高级的技术,指导如何编写更复杂的程序,而不是将程序写得难以理解。第4章将讨论如何处理错误和意想不到的情况。第5章和第6章将介绍两个主要的抽象方式:函数式编程和面向对象编程。第7章给出了一些如何组织程序的指导。
  其余的章节重点关注了JavaScript环境中可用的工具,理论部分相对较少。第8章介绍了一种文字处理的子语言,第9~12章将讲述程序在浏览器内部运行时可利用的工具,教会大家控制网页、应对用户的操作,并与Web服务器通信。
排版规范
  在本书中,采用等宽字体的文本应被理解为代表程序的元素,这些元素有时是各自独立的片段,有时只是指靠近程序的一部分。这段我们已经看过的程序的一部分,可写成如下形式:

  有时,为了演示某些表达式求值时会发生的情况,这些表达式会采用黑体字,其产生的值写在下面,前面有一个箭头:

更新
  访问http://nostarch.com/ejs.htm获得更新、勘误表以及运行本书示例代码的交互式代码沙盒。

专家评论

编程原理与运用规则的简练、完美融合。我喜欢游戏式的程序开发教程。本书再次点燃了我学习编程的热情。对了,是JavaScript!
    —Brendan Eich,JavaScript之父
  因为这本书,我成为了更棒的架构师、作家、咨询师和开发者。
    —Angus Croll,Twitter开发者
  如果你决定只买一本有关JavaScript的书,那么就应是Marijn Haverbeke的这本书。
    —Joey deVilla,Global Nerdy
  本书不仅是学习JavaScript最棒的教材之一,也是通过学习JavaScript进而学习现代编程的优秀图书。当有人问我如何学好JavaScript时,我会推荐这本书。
    —Chris Williams,美国JSConf组织者
  我读过的最棒的JavaScript书籍之一。
    —Rey Bango,微软Client-Web社区项目经理和jQuery团队成员
  这本书不仅是一本非常不错的JavaScript指导书,而且是一本很棒的编程指导书。
    —Ben Nadel,Epicenter咨询公司首席软件工程师
  真是本好书。
    —Design Shack
  这本书对编程基本原理的详述以及对栈和环境等概念的解释非常到位。注重细节使本书从其他的JavaScript书中脱颖而出。
    —Designorati
  学习JavaScript的好书。
    —Craig Buckler,OptimalWorks Web Design公司

上架指导

计算机\程序设计

封底文字

编程原理与运用规则的简练、完美融合。我喜欢游戏式的程序开发教程。本书再次点燃了我学习编程的热情。对了,是JavaScript!
——Brendan Eich,JavaScript之父

因为这本书,我成为了更棒的架构师、作家、咨询师和开发者。
——Angus Croll,Twitter开发者

如果你决定只买一本有关JavaScript的书,那么就应是Marijn Haverbeke的这本书。
——Joey deVilla,Global Nerdy

本书不仅是学习JavaScript最棒的教材之一,也是通过学习JavaScript进而学习现代编程的优秀图书。当有人问我如何学好JavaScript时,我会推荐这本书。
——Chris Williams,美国JSConf的组织者

我读过的最棒的JavaScript书籍之一。
—Rey Bango,微软Client-Web社区项目经理和jQuery团队成员

这本书不仅是一本非常不错的JavaScript指导书,而且也是一本很棒的编程指导书。
——Ben Nadel,Epicenter咨询公司首席软件工程师

这本书对编程基本原理的详述以及对栈和环境等概念的解释非常到位。注重细节使本书从其他的JavaScript书中脱颖而出。
——Designorati


本书是一部优秀的、注重实践的JavaScript教程,通过游戏式的章节安排,在一个又一个完整且连贯的故事中由浅入深地介绍了JavaScript的编程实践。主要内容包括:
 概览了JavaScript编程语言,包括它的语法、良好的编码习惯、控制结构、函数和数据结构等,教你写出简单的程序。
 讨论了JavaScript编程中更高级的技术,教会编写更复杂、更有序的程序。介绍了如何处理错误和意想不到的情况并且分析讨论了两个主要的抽象方式:函数式编程和面向对象编程。
 深入分析了JavaScript环境中可用的工具,包括一种文字处理的子语言以及当程序在浏览器内部运行时可利用的工具,例如如何控制网页、应对用户的操作,并与Web服务器通信。

作者简介

(美)Marijn Haverbeke 著:Marijn Haverbeke 知名程序员,拥有丰富的Web开发经验,目前专注于开源技术、Web应用等方面。专门从事Web应用程序和前端技术,如等开源项目的开发。

译者简介

徐涛 译:暂无简介

译者序

当我第一次阅读这本书的时候,就深深地喜欢上了这本书的写作风格。游戏式的章节、完整且连贯的故事,这些都使我在阅读过程中真正有了读书的快感。
  与其他的JavaScript书籍不同,本书没有列表式的数据类型讲解,也没有枯燥的概念和老掉牙的例子,更没有流行的Ajax专题。本书通过设计一个个由浅入深的小游戏,让读者更加深入而轻松地学习如何应用JavaScript编程技术。因此,建议读者在阅读过程中,每次阅读一个完整章节,以便更好地理解编程故事的情节。
  在翻译过程中,除了对JavaScript语言本身有了深刻理解之外,我也学到了如何从一个需求(游戏设计)进行分析,进而细化到可编程的JavaScript代码部分,尤其是本书中虚拟生态圈游戏的设计,使我真正体会到了JavaScript原来还可以这么做。
  我非常荣幸能够参与本书的翻译工作,感谢机械工业出版社的编辑在翻译过程中给予的鼓励和信任。与此同时,也要感谢我的家人在翻译过程中对我的支持和理解,尤其是我的爱人对本书进行了无数次的阅读,并给出了大量的修改建议。
  由于译者水平有限,翻译错误或者风格不合口味在所难免,对你造成的阅读上的不便我深表歉意。
  针对本书的任何意见你都可以在我的博客上(http://www.cnblogs.com/TomXu),或者通过邮件直接发给我,我的邮件地址是taoxu@live.com。
  感谢并期待你的批评和指正!

图书目录

对本书的赞誉
译者序
前言
第1章 JavaScript基础:值、变量、控制流程 1
1.1  值1
1.1.1  数字1
1.1.2 算术2
1.1.3 字符串3
1.1.4 一元操作符3
1.1.5 布尔值、比较和布尔逻辑4
1.1.6 表达式与语句5
1.2  变量5
1.3  环境7
1.3.1  函数7
1.3.2 prompt和confirm7
1.3.3 print函数8
1.3.4 修改环境8
1.4 程序结构8
1.4.1 条件执行9
1.4.2 while循环与do循环9
1.4.3 缩进代码11
1.4.4 for循环11
1.4.5 跳出循环12
1.4.6 更新变量简便法12
1.4.7 使用switch进行调度12
1.4.8 大小写13
1.4.9 注释13
1.5 进一步认识类型14
1.5.1 Undefined值14
1.5.2 自动类型转换14
1.5.3 自动类型转换的风险15
1.5.4 进一步了解&&和||16
第2章 函数17
2.1 剖析函数定义17
2.1.1 定义顺序18
2.1.2 局部变量18
2.1.3 嵌套作用域19
2.1.4 栈20
2.1.5 函数值20
2.1.6 闭包21
2.1.7 可选参数21
2.2 技巧22
2.2.1 避免重复22
2.2.2 纯函数23
2.2.3 递归24
第3章 数据结构:对象与数组27
3.1 问题:Emily姨妈家的猫27
3.2 基本数据结构28
3.2.1 属性28
3.2.2 对象值29
3.2.3 对象即集合30
3.2.4 易变性30
3.2.5 对象即集合:数组31
3.2.6 方法32
3.3 解决关于Emily姨妈家猫的问题33
3.3.1 分离段落33
3.3.2 找出相关段落34
3.3.3 提取猫的名字35
3.3.4 完整算法35
3.3.5 清理代码36
3.3.6 日期表示38
3.3.7 日期提取39
3.3.8 收集更多信息40
3.3.9 数据表示41
3.4 更多理论42
3.4.1 arguments对象42
3.4.2 完成扫尾工作44
3.4.3 Math对象44
3.4.4 可枚举属性44
第4章 错误处理47
4.1 问题类型47
4.1.1 程序员错误47
4.1.2 运行时错误48
4.2 处理错误48
4.2.1 返回特殊值48
4.2.2 异常49
4.2.3 异常之后的错误清除50
4.2.4 Error对象51
4.2.5 未处理的异常51
4.2.6 选择性Catch51
4.3 自动化测试52
第5章 函数式编程55
5.1 抽象55
5.2 高阶函数56
5.2.1 修改函数57
5.2.2 归约函数58
5.2.3 映射数组59
5.3 隐士的悲惨故事59
5.3.1 HTML60
5.3.2 隐士的文本文件61
5.3.3 找出段落64
5.3.4 强调与脚注64
5.3.5 移动脚注67
5.3.6 生成HTML67
5.3.7 转化隐士的书70
5.4 其他函数技巧71
5.4.1 操作符函数71
5.4.2 分布应用72
5.4.3 组合73
第6章 面向对象编程75
6.1 对象75
6.1.1 定义方法75
6.1.2 构造函数76
6.1.3 从原型中构建77
6.1.4 构造函数与原型77
6.1.5 原型污染79
6.1.6 对象即词典80
6.1.7 指定接口81
6.2 构建生态系统模拟82
6.2.1 定义生态圈82
6.2.2 空间里的点83
6.2.3 呈现网格83
6.2.4 昆虫的编程接口85
6.2.5 生态圈对象86
6.2.6 this及其作用域87
6.2.7 有活力的生命88
6.2.8 昆虫移动90
6.2.9 更多生命形式90
6.2.10 多态性93
6.3 更逼真的模拟生态系统93
6.3.1 继承93
6.3.2 记录能量94
6.3.3 添加植物96
6.3.4 食草动物97
6.3.5 为它带来生命97
6.3.6 人工愚蠢99
6.4 原型继承100
6.4.1 类型定义工具100
6.4.2 类型原型101
6.4.3 对象的世界102
6.4.4 instanceof操作符103
6.4.5 混合类型104
第7章 模块化107
7.1 模块107
7.1.1 生态圈例子107
7.1.2  模块文件化108
7.2 模块的形态108
7.2.1 函数作为局部命名空间109
7.2.2 模块对象110
7.3 接口设计111
7.3.1 可预见性111
7.3.2 可组合性111
7.3.3 分层接口112
7.3.4 参数对象112
7.4 JS库113
第8章 正则表达式115
8.1 语法115
8.1.1 匹配字符集115
8.1.2 匹配单词和字符边界116
8.1.3 重复模式117
8.1.4 子表达式分组117
8.1.5 多选一117
8.2 匹配与替换118
8.2.1 匹配方法118
8.2.2 正则表达式和替换方法118
8.2.3 动态创建RegExp 对象120
8.3 解析.ini文件121
8.4 结论123
第9章 Web编程:速成课125
9.1 互联网125
9.1.1 URL网址125
9.1.2 服务器端编程126
9.1.3 客户端编程126
9.2  Web脚本基础知识126
9.2.1 windows对象126
9.2.2 document对象127
9.2.3 计时器128
9.2.4 表单128
9.2.5 表单脚本化130
9.2.6 自动焦点132
9.3 浏览器非兼容性132
9.4 延伸阅读133
第10章 文档对象模型135
10.1 DOM元素135
10.1.1 节点链接136
10.1.2 节点类型136
10.1.3 innerHTML属性137
10.1.4 查找节点137
10.1.5 创建节点138
10.1.6 节点创建辅助函数138
10.1.7 移动节点139
10.1.8 print实现140
10.2 样式表140
10.2.1 样式属性141
10.2.2 隐藏节点141
10.2.3 定位141
10.2.4 控制节点大小142
10.3 警示语142
第11章 浏览器事件143
11.1 事件句柄143
11.1.1 注册事件句柄143
11.1.2 事件对象145
11.1.3 鼠标相关事件类型145
11.1.4 键盘事件146
11.1.5 停止事件147
11.1.6 事件对象正规化147
11.1.7 跟踪焦点148
11.1.8 表单事件148
11.1.9 window事件149
11.2 示例:实现推箱子149
11.2.1 等级输入格式149
11.2.2 程序设计150
11.2.3 游戏板展示150
11.2.4  控制器对象153
第12章 HTTP请求157
12.1 HTTP协议157
12.2 XMLHttpRequest API158
12.2.1 创建请求对象158
12.2.2 简单的请求158
12.2.3 发送异步请求159
12.2.4 获取XML数据160
12.2.5 读取JSON数据161
12.2.6  基本的请求包装161
12.3 学习HTTP162

教学资源推荐
作者: 顾治华 陈天煌 忽朝俭
作者: 邱李华 曹青 郭志强 编著
参考读物推荐