《JavaScript编程精解》简介:
如果你只想阅读一本关于JavaScript的图书,那么本书应该是你的首选。本书由世界级JavaScript程序员撰写,JavaScript之父和多位JavaScript专家鼎力推荐。本书适合作为系统学习JavaScript的参考书,它在写作思路上几乎与现有的所有同类书都不同,打破常规,将编程原理与运用规则完美地结合在一起,而且将所有知识点与一个又一个经典的编程故事融合在一起,读者可以在轻松的游戏式开发中学会JavaScript程序设计,趣味性十足,可操作性极强。
全书一共12章:第1~3章介绍了JavaScript的基本语法,旨在帮助读者编写出正确的JavaScript程序,包含数字、算术、字符串、变量、程序结构、控制流程、类型、函数、对象和数组等最基础和最核心的内容;第4~7章讲解了JavaScript编程中的高级技术,目的是帮助读者编写更复杂的JavaScript程序,主要涉及错误处理、函数式编程、面向对象编程、模块化等重要内容;第8~12章则将重心转移到JavaScript环境中可用的工具上,分别详细讲解了正则表达式、与Web编程相关的知识、文档对象模型、浏览器事件和HTTP请求等。
《JavaScript编程精解》摘录:
【原文】 子曰:“不愤不咎,不悱不发。举一隅不以三隅反,则不复也。” 【译文】 孔子说:“不到他努力想弄明白而不得的程度不要去开导他;不到他心里明白却不能完善表达出来的程度不要去启发他。如果他不能举一反三,就不要再反复地给他举例了。” 【评析】 这里是孔子介绍了他在教育方面的体会,他并不觉得一个老师一言堂地给学生灌输就能有好的教学效果,而是觉得关键在于怎样启发学生自己去思考和琢磨。不是让老师替学生去举一反三、反复列举,而是启发学生去举一反三、触类旁通。要做到这一点,就必须坚持一个原则:不要轻易地把答案告诉学生,也不要过多地替学生思考,更不要给学生灌输标准答案。我想这是值得我们今天的老师在教学中思考和借鉴的。 聪明的老师在向学生教授新课的时候,往往从提问或做游戏开始,那样一方面容易能集中学生的思想,另一方面也能启发学生的思维。如果只是单纯地将现成的答案灌输给学生,学生往往只知其然,不知其所以然,更加会缺乏灵活运用和独立思考的能力。 又比如你在读这本书的时候,千万不要以为这里的译文和评论分析就是唯一的答案,你也可以试着从另外的角度来理解《论语》的原文。如果你善于开动脑筋勤思考,往往会有意外的发现和惊喜。
《JavaScript编程精解》目录:
对本书的赞誉
译者序
前言
第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
· · · · · ·