1.本书是唯一一本介绍JavaScript面向对象编程的图书。
2.本书作者是知名的Web开发人员和作者。受到国内众多前端开发人员,如淘宝UED团队的推崇和推荐。 Stoyan Stefanov:Facebook公司工程师、作家、演说家。他经常会在其博客(www.phpied.com)与一些相关会议中就Web开发话题发表独到见解。他还运营着其他一些网站,其中包括JSPatterns.com—一个用于探讨JavaScript模式的网站。
3.本书内容较为简单,初学者容易上手。
内容提要
JavaScript语言是一种具有高度表达能力的、基于原型特性的、非常灵活的面向对象程序设计语言。本书着重于介绍JavaScript在面向对象方面的特性,以为您展示如何去构建强健的、可维护的、功能强大的应用程序及程序库。
本书是《JavaScript面向对象编程指南》的第二版,全书包括8章和4个附录。依次介绍了JavaScript的发展历史、基础性话题(变量、数据类型、数组、循环以及条件表达式)、函数、对象、原型、继承的实现、BOM和DOM等。附录部分包括了学习JavaScript编程常用的参考资源。尤其值得一提的是,本书作者是JavaScript设计模式方面的专家,他在本书第8章中介绍了几种常用的JavaScript编程模式,这也成为他的另一本重要著作《JavaScript模式》(JavaScript Patterns)奠定了基础。
本书全面地覆盖了JavaScript语言的OO特性,同时兼顾基础知识,对初学者来说,是难得的JavaScript佳作。读者不需要具备任何的JavaScript基础知识及项目经验,通过学习这本书,将会在面试有关JavaScript程序设计的职位时游刃有余。
第1章 面向对象的JavaScript 1
1.1 回顾历史 2
1.2 浏览器的战争与复兴 3
1.3 分析现状 4
1.4 展望未来 5
1.5 ECMAScript 5 6
1.6 面向对象的程序设计 6
1.6.1 对象 7
1.6.2 类 8
1.6.3 封装 8
1.6.4 聚合 9
1.6.5 继承 9
1.6.6 多态 10
1.7 OOP小结 10
1.8 训练环境设置 11
1.8.1 WebKit所附带的Web审查工具 11
1.8.2 Mac上的JavaScriptCore 12
1.8.3 更多控制台 13
1.9 本章小结 15
第2章 基本数据类型、数组、循环及条件表达式 16
2.1 变量 16
2.2 操作符 19
2.3 基本数据类型 23
2.3.1 查看类型操作符—typeof 24
2.3.2 数字 24
2.3.3 字符串 29
2.3.4 布尔值 33
2.3.5 undefined与null 39
2.4 基本数据类型综述 41
2.5 数组 42
2.5.1 增加、更新数组元素 43
2.5.2 删除元素 44
2.5.3 数组的数组 44
2.6 条件与循环 45
2.6.1 if条件表达式 46
2.6.2 else语句 46
2.6.3 代码块 47
2.6.4 检查变量是否存在 48
2.6.5 循环 53
2.7 注释 58
2.8 本章小结 58
2.9 练习题 59
第3章 函数 61
3.1 什么是函数 62
3.1.1 调用函数 62
3.1.2 参数 63
3.2 预定义函数 64
3.2.1 parseInt() 65
3.2.2 parseFloat() 67
3.2.3 isNaN() 68
3.2.4 isFinite() 68
3.2.5 URI的编码与反编码 69
3.2.6 eval() 69
3.2.7 一点惊喜—alert()函数 70
3.3 变量的作用域 71
3.4 函数也是数据 73
3.4.1 匿名函数 75
3.4.2 回调函数 75
3.4.3 回调示例 77
3.4.4 即时函数 79
3.4.5 内部(私有)函数 80
3.4.6 返回函数的函数 81
3.4.7 能重写自己的函数 82
3.5 闭包 83
3.5.1 作用域链 84
3.5.2 利用闭包突破作用域链 85
3.5.3 getter与setter 91
3.5.4 迭代器 92
3.6 本章小结 93
3.7 练习题 93
第4章 对象 95
4.1 从数组到对象 95
4.1.1 元素、属性、方法与成员 97
4.1.2 哈希表、关联型数组 98
4.1.3 访问对象属性 98
4.1.4 调用对象方法 100
4.1.5 修改属性与方法 101
4.1.6 使用this值 102
4.1.7 构造器函数 102
4.1.8 全局对象 104
4.1.9 构造器属性 106
4.1.10 instanceof操作符 106
4.1.11 返回对象的函数 107
4.1.12 传递对象 108
4.1.13 比较对象 109
4.1.14 Webkit控制台中的对象 110
4.2 内建对象 111
4.2.1 Object 112
4.2.2 Array 113
4.2.3 Function 117
4.2.4 Boolean 124
4.2.5 Number 125
4.2.6 String 127
4.2.7 Math 132
4.2.8 Date 134
4.2.9 RegExp 139
4.2.10 Error对象 146
4.3 本章小结 149
4.4 练习题 150
第5章 原型 153
5.1 原型属性 154
5.1.1 利用原型添加方法与属性 154
5.1.2 使用原型的方法与属性 155
5.1.3 自身属性与原型属性 156
5.1.4 利用自身属性重写原型属性 158
5.1.5 isPrototypeOf()方法 162
5.1.6 神秘的__proto__链接 163
5.2 扩展内建对象 164
5.2.1 关于扩展内建对象的讨论 166
5.2.2 原型陷阱 167
5.3 本章小结 169
5.4 练习题 170
第6章 继承 171
6.1 原型链 171
6.1.1 原型链示例 172
6.1.2 将共享属性迁移到原型中去 175
6.2 只继承于原型 178
6.3 uber—子对象访问父对象的方式 181
6.4 将继承部分封装成函数 183
6.5 属性拷贝 185
6.6 请小心处理引用拷贝 187
6.7 对象之间的继承 190
6.8 深拷贝 192
6.9 object() 194
6.10 原型继承与属性拷贝的混合应用 195
6.11 多重继承 197
6.12 寄生式继承 199
6.13 构造器借用 200
6.14 本章小结 203
6.15 案例学习:图形绘制 206
6.15.1 分析 207
6.15.2 实现 207
6.15.3 测试 211
6.16 练习题 213
第7章 浏览器环境 215
7.1 在HTML页面中引入JavaScript代码 215
7.2 概述:BOM与DOM 216
7.3 BOM 217
7.3.1 window对象再探 217
7.3.2 window.navigator 218
7.3.3 控制台的备忘功能 219
7.3.4 window.location 219
7.3.5 window.history 221
7.3.6 window.frames 222
7.3.7 window.screen 223
7.3.8 window.open()/close() 224
7.3.9 window.moveTo()、window.resizeTo() 225
7.3.10 window.alert()、window.prompt()、window.confirm() 225
7.3.11 window.setTimeout()、window.setInterval() 227
7.3.12 window.document 229
7.4 DOM 229
7.4.1 Core DOM与HTML DOM 231
7.4.2 DOM节点的访问 233
7.4.3 DOM节点的修改 242
7.4.4 新建节点 245
7.4.5 移除节点 248
7.4.6 只适用于HTML的DOM对象 250
7.5 事件 254
7.5.1 内联HTML属性法 254
7.5.2 元素属性法 254
7.5.3 DOM的事件监听器 255
7.5.4 捕捉法与冒泡法 257
7.5.5 阻断传播 258
7.5.6 防止默认行为 260
7.5.7 跨浏览器的事件监听器 261
7.5.8 事件类型 262
7.6 XMLHttpRequest对象 263
7.6.1 发送请求 264
7.6.2 处理响应 265
7.6.3 在早于7的IE版本中创建XMLHttpRequest对象 266
7.6.4 A代表异步 267
7.6.5 X代表XML 267
7.6.6 实例示范 268
7.7 本章小结 270
7.8 练习题 272
第8章 编程模式与设计模式 274
8.1 编程模式 275
8.1.1 行为隔离 275
8.1.2 命名空间 278
8.1.3 初始化分支 281
8.1.4 惰性初始 282
8.1.5 配置对象 283
8.1.6 私有属性和方法 285
8.1.7 特权函数 286
8.1.8 私有函数的公有化 286
8.1.9 即时函数 287
8.1.10 模块 288
8.1.11 链式调用 289
8.1.12 JSON 290
8.2 设计模式 292
8.2.1 单件模式1 292
8.2.2 单件模式2 293
8.2.3 工厂模式 294
8.2.4 装饰器模式 296
8.2.5 观察者模式 299
8.3 本章小结 302
附录A 保留字 303
附录B 内建函数 307
附录C 内建对象 310
附录D 正则表达式 347
《人民币国际化报告2020:上海如何建设全球金融中心》内容简介:《人民币国际化报告2020》的主题为“上海如何建设全球金融中心”,
《CSS选择器世界(第2版)》内容简介:CSS选择器是CSS世界的支柱,撑起了整个精彩纷呈的CSS世界。本书专门介绍CSS选择器的相关知识
这是一本版式设计的高端作品集!不同于市面上比较基础的版式设计类书籍,本书中包含了全球最新的,最具创意的版式设计方案,并配
现在的软件糟糕透顶。软件不安全,它允许恶意程序通过Internet线路钻到我们的卧室;软件不可靠,当我们最需要它的时候它却崩溃,
《ExtJS源码分析与开发实例宝典》从ExtJS实现的基本功能开始讲解,从两个方面对ExtJS进行整体上的概述,让读者从宏观上去把握Ext
《7天精通PhotoshopCS5UI交互设计》主要内容简介:Photoshop是美国Adobe公司开发的一款图形图像软件,目前最新的版本是Photoshop
《那场青春的一次出走》内容简介:这是一本青春情感美文集,主人公均是以青少年为主。那朦胧的爱情、浓浓的亲情,以及真挚的友情,
《2020—2021年中国原材料工业发展蓝皮书》内容简介:本书从综合、行业、地区、园区、企业、政策、热点、展望八个角度,分析总结了
WebRTC是一个支持网络浏览器进行实时语音对话或视频对话的软件架构。《LearningWebRTC中文版》使用形象的案例介绍,逐步深入地阐
朱宏微软(中国)用户体验布道师新浪微博@MLikeasong负责大中华地区微软设计风格的普及、设计团体交流合作、基于Windows8和Windo
《揭秘Web应用程序攻击技术》适合所有热爱网络安全的人们,尤其是高等院校计算机专业的学生。同时,《揭秘Web应用程序攻击技术》
网络伴随我们的时间不算很长,然而因特网的流行和商业化的普及速度却是惊人的,这促使人类活动和社会的每个领域都发生了改变。我
《学习力:人生进阶课》内容简介:学习是一生的事情。每个人都希望能够通过学习改变人生轨迹,向更高处走去。本书通过分析在心理学
《任弼时风采》内容简介:任弼时(1904—1950),伟大的马克思主义者,无产阶级革命家、政治家、组织家,党的第一代领导集体的重要
《2017年MBA、MPA、MPAcc管理类联考英语历年真题详解》内容简介:本书对MBA联考英语历年真题给予了系统分析和解答,并总结和归纳了
《浮世绘百景》内容简介:◎云集16位浮世绘巨匠,包括葛饰北斋、歌川广重、河锅晓斋、小林清亲等,从江户时代跨越到明治时代,一窥
《同时(2018年版)》内容简介:《同时》是桑坦格的“最后一部”随笔集,她的“最后一本书”。书名取自苏珊·桑坦最后一次演说的标
《Java特种兵(上册)》内容简介:《Java特种兵(上册)》上册共10章,主要内容包括:从简单的角度来验证功底,通过一些简单的例子
《中国社会建设现代化之路》内容简介:本书中国社会建设现代化,是一个崭新的重大理论与实践课题。作者积多年社会建设理论与实践经
《犹太人智慧全书》内容简介:犹太民族并非上帝的宠儿,他们的成功是由苦难的历史铸就的。犹太民族长期饱受躁躏、放逐、杀戮,面对