内容简介 · · · · · ·
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的面向对象特性,如对象的私有成员与私有方法;如何应用适当的编程模式,发挥JavaScript语言特有的优势;如何应用设计模式解决常见问题等。
《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。
JavaScript面向对象编程指南的创作者 · · · · · ·
-
凌杰 译者
作者简介 · · · · · ·
Stoyan Stefanov:雅虎公司的Web开发人员、Zend认证工程师。他经常会在其博客(www.phpied.com)与一些相关会议中就JavaScript、PHP等Web开发话题发表独到见解。他还独自运营着其他一些网站,其中包括JSPatterns.com—一个用于探讨JavaScript模式的网站。除此之外,Stoyan还是雅虎性能优化工具的项目领导人,同时参与了多个开源项目,例如Firebug和PEAR。
Stoyan是一位“世界公民”,出生并成长于保加利亚,但却是一个加拿大公民,现居住于美国加利福尼亚州的洛杉矶。在短暂的线下时间里,他喜欢弹吉他,与家人一起去圣莫尼卡海滩或待在游泳池边。
目录 · · · · · ·
1.1 回顾历史 1
1.2 变革之风 3
1.3 分析现状 3
1.4 展望未来 4
1.5 面向对象程序设计 5
1.5.1 对象 5
1.5.2 类 6
1.5.3 封装 6
1.5.4 聚合 7
1.5.5 继承 7
1.5.6 多态 8
1.6 OOP概述 8
1.7 训练环境设置 9
1.8 使用Firebug控制台 10
1.9 本章小结 11
第2章 基本数据类型、数组、循环及条件表达式 13
2.1 变量 13
2.2 操作符 15
2.3 基本数据类型 18
2.3.1 查看类型操作符——typeof 19
2.3.2 数字 19
2.3.3 字符串 23
2.3.4 布尔值 26
2.3.5 Undefined与null 32
2.4 基本数据类型综述 34
2.5 数组 35
2.5.1 增加、更新数组元素 36
2.5.2 删除元素 36
2.5.3 数组的数组 37
2.6 条件与循环 38
2.6.1 代码块 38
2.6.2 循环 44
2.7 注释 49
2.8 本章小结 49
2.9 练习题 50
第3章 函数 52
3.1 什么是函数 53
3.1.1 调用函数 53
3.1.2 参数 53
3.2 预定义函数 55
3.2.1 parseInt() 56
3.2.2 parseFloat() 57
3.2.3 isNaN() 58
3.2.4 isFinite() 58
3.2.5 URI的编码与反编码 59
3.2.6 eval() 59
3.2.7 一点惊喜—alert()函数 60
3.3 变量的作用域 60
3.4 函数也是数据 62
3.4.1 匿名函数 63
3.4.2 回调函数 64
3.4.3 回调示例 65
3.4.4 自调函数 66
3.4.5 内部(私有)函数 67
3.4.6 返回函数的函数 68
3.4.7 能重写自己的函数 68
3.5 闭包 70
3.5.1 作用域链 70
3.5.2 词法作用域 71
3.5.3 利用闭包突破作用域链 72
3.5.4 Getter与Setter 78
3.5.5 迭代器 79
3.6 本章小结 80
3.7 练习题 80
第4章 对象 82
4.1 从数组到对象 82
4.1.1 元素、属性、方法 84
4.1.2 哈希表、关联型数组 85
4.1.3 访问对象的属性 85
4.1.4 调用对象的方法 86
4.1.5 修改属性与方法 87
4.1.6 使用this值 88
4.1.7 构造器函数 88
4.1.8 全局对象 90
4.1.9 构造器属性 91
4.1.10 instanceof操作符 92
4.1.11 返回对象的函数 92
4.1.12 传递对象 93
4.1.13 对象比较 94
4.1.14 Firebug控制台中的对象 95
4.2 内建对象 96
4.2.1 Object 97
4.2.2 Array 98
4.2.3 Function 102
4.2.4 Boolean 107
4.2.5 Number 109
4.2.6 String 110
4.2.7 Math 115
4.2.8 Date 117
4.2.9 RegExp 121
4.2.10 Error对象 127
4.3 本章小结 131
4.4 练习题 132
第5章 原型 135
5.1 原型属性 135
5.1.1 利用原型添加方法与属性 136
5.1.2 使用原型的方法与属性 137
5.1.3 自身属性与原型属性 138
5.1.4 利用自身属性重写原型属性 139
5.1.5 isPrototypeOf()方法 143
5.1.6 神秘的_proto_链接 143
5.2 扩展内建对象 145
5.2.1 关于扩展内建对象的讨论 146
5.2.2 一些原型陷阱 147
5.3 本章小结 150
5.4 练习题 150
第6章 继承 152
6.1 原型链 152
6.1.1 原型链示例 153
6.1.2 将共享属性迁移到原型中去 156
6.2 只继承于原型 158
6.3 uber—子对象访问父对象的方式 161
6.4 将继承部分封装成函数 163
6.5 属性拷贝 163
6.6 小心处理引用拷贝 165
6.7 对象之间的继承 167
6.8 深拷贝 169
6.9 object() 171
6.10 原型继承与属性拷贝的混合应用 172
6.11 多重继承 173
6.12 寄生式继承 175
6.13 构造器借用 176
6.14 本章小结 179
6.15 案例学习:图形绘制 183
6.15.1 分析 183
6.15.2 实现 184
6.15.3 测试 188
6.16 练习题 189
第7章 浏览器环境 190
7.1 在HTML页面中引入JavaScript代码 190
7.2 概述:BOM与DOM 191
7.3 BOM 192
7.3.1 window对象再探 192
7.3.2 window.navigator 193
7.3.3 Firebug的备忘功能 193
7.3.4 window.location 194
7.3.5 window.history 195
7.3.6 window.frames 196
7.3.7 window.screen 197
7.3.8 window.open()/close() 198
7.3.9 window.moveTo()、window.resizeTo() 199
7.3.10 window.alert()、window.prompt()、window.confirm() 199
7.3.11 window.setTimeout()、window.setInterval() 201
7.3.12 window.document 202
7.4 DOM 202
7.4.1 Core DOM与HTML DOM 204
7.4.2 DOM节点的访问 206
7.4.3 DOM节点的修改 215
7.4.4 新建节点 218
7.4.5 移除节点 221
7.4.6 只适用于HTML的DOM对象 223
7.5 事件 227
7.5.1 内联HTML属性法 227
7.5.2 元素属性法 227
7.5.3 DOM的事件监听器 228
7.5.4 捕捉法与冒泡法 229
7.5.5 阻断传播 231
7.5.6 防止默认行为 233
7.5.7 跨浏览器事件监听器 233
7.5.8 事件类型 235
7.6 XMLHttpRequest对象 236
7.6.1 发送请求 236
7.6.2 处理响应 237
7.6.3 在早于7的IE版本中创建XMLHttpRequest对象 238
7.6.4 A代表异步 239
7.6.5 X代表XML 240
7.6.6 实例示范 240
7.7 本章小结 242
7.8 练习题 244
第8章 编程模式与设计模式 247
8.1 编程模式 248
8.1.1 行为隔离 248
8.1.2 命名空间 250
8.1.3 初始化分支 253
8.1.4 延迟定义 254
8.1.5 配置对象 255
8.1.6 私有属性和方法 257
8.1.7 特权函数 258
8.1.8 私有函数的公有化 258
8.1.9 自执行函数 259
8.1.10 链式调用 260
8.1.11 JSON 261
8.2 设计模式 262
8.2.1 单件模式1 263
8.2.2 单件模式2 263
8.2.3 工厂模式 264
8.2.4 装饰器模式 266
8.2.5 观察者模式 269
8.3 本章小结 272
附录A 保留字 273
附录B 内建函数 276
附录C 内建对象 279
附录D 正则表达式 305
· · · · · · (收起)
创作者在豆瓣 · · · · · ·( 全部 1 )
喜欢读"JavaScript面向对象编程指南"的人也喜欢的电子书 · · · · · ·
喜欢读"JavaScript面向对象编程指南"的人也喜欢 · · · · · ·
JavaScript面向对象编程指南的书评 · · · · · · ( 全部 13 条 )

应景而生的javascript oo教程~

要学JS OO编程,这本书还真是必读
这篇书评可能有关键情节透露
要学JS OO编程,这本书还真是必读。英文版审阅者包括Douglas Crockford和Nicolas C.Zakas这样的大牛。阮一峰曾力荐此书,并写下了学习笔记: http://t.cn/zWhKPzw http://t.cn/hDczH http://t.cn/hdDwyK (展开)
《Object-Oriented JavaScript》的书名问题

谁注意到第6章后边的练习算三角形面式的公式是错误的?
> 更多书评 13篇
读书笔记 · · · · · ·
我来写笔记-
/** * 深度拷贝 */ function deepCopy (p, c) { var c = [] || {}; for(var i in p){ if( p.hasOwnProperty(i)) { if (typeof p[i] === 'object') { c[i] = Array.isArray(p[i]) ? [] : {}; deepCopy(p[i], c[i]); }else { c[i] = p[i]; } } } return c; } //test var parent = { numbers: [1,2,3], letters: ['a','b','c'], obj: { prop: 1 }, bool: true }; var mydeep = deepCopy(parent); var myshallow = extendCopy(paren...
2017-02-05 11:10:49
-
豆豆爸爸 (不断突破重塑,连接一切可能)
在新建一个对象时,一般会先继承于现有的对象,然后再给其添加上属性和方法。 ES5 15.2.3.5 Object.create()方法标准实现 http://es5.github.com/#x15.2.3.5 从es5-sham.js 摘抄的源码: Object.create = function create(prototype, properties) { var object; var Type = function () {}; Type.prototype = prototype; object = new Type(); object.__proto__ = prototype; Object.defineProperties(object, properties); ret...2013-05-02 06:49:28
-
豆豆爸爸 (不断突破重塑,连接一切可能)
在新建一个对象时,一般会先继承于现有的对象,然后再给其添加上属性和方法。 ES5 15.2.3.5 Object.create()方法标准实现 http://es5.github.com/#x15.2.3.5 从es5-sham.js 摘抄的源码: Object.create = function create(prototype, properties) { var object; var Type = function () {}; Type.prototype = prototype; object = new Type(); object.__proto__ = prototype; Object.defineProperties(object, properties); ret...2013-05-02 06:49:28
-
/** * 深度拷贝 */ function deepCopy (p, c) { var c = [] || {}; for(var i in p){ if( p.hasOwnProperty(i)) { if (typeof p[i] === 'object') { c[i] = Array.isArray(p[i]) ? [] : {}; deepCopy(p[i], c[i]); }else { c[i] = p[i]; } } } return c; } //test var parent = { numbers: [1,2,3], letters: ['a','b','c'], obj: { prop: 1 }, bool: true }; var mydeep = deepCopy(parent); var myshallow = extendCopy(paren...
2017-02-05 11:10:49
-
/** * 深度拷贝 */ function deepCopy (p, c) { var c = [] || {}; for(var i in p){ if( p.hasOwnProperty(i)) { if (typeof p[i] === 'object') { c[i] = Array.isArray(p[i]) ? [] : {}; deepCopy(p[i], c[i]); }else { c[i] = p[i]; } } } return c; } //test var parent = { numbers: [1,2,3], letters: ['a','b','c'], obj: { prop: 1 }, bool: true }; var mydeep = deepCopy(parent); var myshallow = extendCopy(paren...
2017-02-05 11:10:49
-
豆豆爸爸 (不断突破重塑,连接一切可能)
在新建一个对象时,一般会先继承于现有的对象,然后再给其添加上属性和方法。 ES5 15.2.3.5 Object.create()方法标准实现 http://es5.github.com/#x15.2.3.5 从es5-sham.js 摘抄的源码: Object.create = function create(prototype, properties) { var object; var Type = function () {}; Type.prototype = prototype; object = new Type(); object.__proto__ = prototype; Object.defineProperties(object, properties); ret...2013-05-02 06:49:28
这本书的其他版本 · · · · · · ( 全部6 )
-
人民邮电出版社 (2014)8.7分 90人读过
-
Packt Publishing (2008)8.6分 70人读过
-
Packt Publishing (2013)8.6分 9人读过
-
以下书单推荐 · · · · · · ( 全部 )
- 书单-编程-前端 (LZX)
- 最近读的 20130602 (乐小样)
- Required JavaScript Reading (糖伴西红柿)
- BaiduLib CI (Mescoda)
- 前端那点事儿 (_parzival)
谁读这本书? · · · · · ·
二手市场 · · · · · ·
订阅关于JavaScript面向对象编程指南的评论:
feed: rss 2.0
1 有用 郫县豆瓣 2015-04-17 11:35:54
大牛作品,某些概念解释得特别接地气。ps.同是人邮出版,虽然印刷有些小错误但不影响阅读,字体和代码比起图灵系列真是友好太多,感觉图灵的编辑都蛮节约纸张。
0 有用 芦笋和小提琴 2013-12-01 20:30:52
易懂 是初学JS的好教程
0 有用 じゃなん 2014-08-13 21:00:12
js oo的入门书,想要进一步了解,推荐dogulas的good part和《javascript模式》
0 有用 爱在 2022-10-09 14:19:13 德国
不知所云。。。 @2022-10-09 14:19:13
1 有用 Reborn 2014-09-24 16:17:04
感谢 @owlman 提供的书稿。关于JS的许多trick都在里面有谈及,在我学习js各种库如jquery的时候,和写自己的插件时,派上了很大的用场。JS真的是一门很神奇的语言,网页上许许多多有用的、动态绚丽的效果绝大多数都需要用到JS。本书简繁适中,适合新手入门及熟悉者回顾概念,较难的部分需要结合实际经验理解体会。