2006-09-14

Nirvana Studio JavaScript 经典文章收藏

NirvanaStudio 对于 JavaScript
的研究还是比较深刻的,对于想深入学习 JavaScript
的朋友们来说下面的文章应该是不错的内容。

1. 如何优化JavaScript脚本的性能
http://www.nirvanastudio.org/javascript/improve-javascript-performanc...

2. JavaScript = C + Lisp
http://www.nirvanastudio.org/javascript/javascript-c-lisp.html

3. 函数式JavaScript编程指南
http://www.nirvanastudio.org/wp-content/uploads/2006/04/Functional_Ja...

4. JavaScript中的类继承
http://www.nirvanastudio.org/javascript/classical-inheritance-in-java...

5. JavaScript Templates
http://www.nirvanastudio.org/javascript/javascript-templates.html

6. JavaScript中的私有成员
http://www.nirvanastudio.org/javascript/private-members-in-javascript...

7. JavaScript:世界上最被误解的语言
http://www.nirvanastudio.org/javascript/javascript-the-worlds-most-mi...

8. 编写自己的dojo扩展
http://www.nirvanastudio.org/javascript/%e7%bc%96%e5%86%99%e8%87%aa%e...

JavaScript高级程序设计

来源:Nirvana Studio
profession-javascript-cover.jpg

基本信息

  • 【英文名】Professional JavaScript for Web Developers
  • 【作者】Nicholas C. Zakas
  • 【译者】曹力 张欣
  • 【ISBN】7115152098
  • 【出版时间】2006-9-15
  • 【页码】670
  • 【原出版社】Wrox
  • 【简介】本书从最早期Netscape浏览器中的Javascript开始讲起,直到当前它对XML和Web服务的具体支持,展示了如何充分利用这种功能强大的语言开发自己的应用程序,以解决当今Web开发者面对的商业问题。
  • 活动主页

译者序

亲爱的读者:

当您从书架上拿出这本书的时候,我想您肯定对Ajax技术有着浓厚的兴趣,而本书也正是您的正确选择。本书的作者Nicholas C. Zakas用通俗易懂的语言,将JavaScript的诞生、现在的状况、未来的发展和与其紧密相关的各种技术一一详尽地叙述出来,刚学 JavaScript的朋友,可以按部就班成为高手,而已经是高手的朋友,则可以将本书作为参考手册。

第1章讲述了JavaScript的起源,给大家一个关于JavaScript正确的认知。

第2~5章详细介绍了JavaScript语言本身,揭示了一些JavaScript不为认知的语言特点。

第6~9章介绍了JavaScript和浏览器进行交互的一些基础知识和一些进阶知识,如DOM的基础、正则表达式。

第10~13章介绍了一些更加高级的JavaScript技巧,这些技巧可以构建良好的客户端逻辑,包括表格排序、拖动等。

第14章关于错误处理的内容,既有如何编程处理JavaScript错误,也包含了如何调试JavaScript的方法,而调试一直是JavaScript的弱项。

第16、17章讲述了利用JavaScript进行客户端到服务器的同学,不仅仅介绍了现在的Ajax技术的基础XML HTTP Request,还介绍了曾经出现过的一些方法。第17章更明确的介绍了如何调用Web服务。

第19章,介绍了如何考虑生产环境中JavaScript所需要注意的一些事情,如安全性、性能等。

第20章,展望了JavaScript未来的发展。

本书除了介绍了JavaScript的各个方面外,更难得的是,作者更涵盖了现今各个流行浏览器之间在这些方面的区别,并帮助读者,解决这些问题。

本书第1~5章由张欣翻译,第6~20章由曹力翻译,全书由张欣统稿、润色及审校。还要感谢全体工作人员的努力才将本书完成。

我们深深地感我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。

限于我们的水平,翻译过程中的疏漏和错误再作难免,请广大读者批评指正。

曹力
2006年于东南大学

目录

第1章  JavaScript是什么 1
1.1 历史简述 1
1.2 JavaScript实现 2
1.2.1 ECMAScript 3
1.2.2 DOM 5
1.2.3 BOM 8
1.3 小结 8
第2章 ECMAScript基础 9
2.1 语法 9
2.2 变量 10
2.3 关键字 12
2.4 保留字 12
2.5 原始值和引用值 13
2.6 原始类型 13
2.6.1 typeof运算符 14
2.6.2 Undefined类型 14
2.6.3 Null类型 15
2.6.4 Boolean类型 15
2.6.5 Number类型 15
2.6.6 String类型 17
2.7 转换 18
2.7.1 转换成字符串 18
2.7.2 转换成数字 19
2.7.3 强制类型转换 20
2.8 引用类型 22
2.8.1 Object类 22
2.8.2 Boolean类 23
2.8.3 Number类 23
2.8.4 String类 24
2.8.5 instanceof运算符 28
2.9 运算符 28
2.9.1 一元运算符 28
2.9.2 位运算符 32
2.9.3 Boolean运算符 37
2.9.4 乘性运算符 40
2.9.5 加性运算符 41
2.9.6 关系运算符 42
2.9.7 等性运算符 43
2.9.8 条件运算符 45
2.9.9 赋值运算符 45
2.9.10 逗号运算符 46
2.10 语句 46
2.10.1 if语句 46
2.10.2 迭代语句 47
2.10.3 有标签的语句 48
2.10.4 break语句和continue语句 48
2.10.5 with语句 50
2.10.6 switch语句 50
2.11 函数 51
2.11.1 无重载 53
2.11.2 arguments对象 53
2.11.3 Function类 54
2.11.4 闭包 56
2.12 小结 57
第3章 对象基础 58
3.1 面向对象术语 58
3.1.1 面向对象语言的要求 58
3.1.2 对象的构成 59
3.2 对象应用 59
3.2.1 声明和实例化 59
3.2.2 对象引用 59
3.2.3 对象废除 59
3.2.4 早绑定和晚绑定 60
3.3 对象的类型 60
3.3.1 本地对象 60
3.3.2 内置对象 70
3.3.3 宿主对象 75
3.4 作用域 75
3.4.1 公用、受保护和私有作用域 75
3.4.2 静态作用域并非静态的 76
3.4.3 关键字this 76
3.5 定义类或对象 78
3.5.1 工厂方式 78
3.5.2 构造函数方式 80
3.5.3 原型方式 80
3.5.4 混合的构造函数/原型方式 81
3.5.5 动态原型方法 82
3.5.6 混合工厂方式 83
3.5.7 采用哪种方式 84
3.5.8 实例 84
3.6 修改对象 86
3.6.1 创建新方法 86
3.6.2 重定义已有方法 87
3.6.3 极晚绑定 88
3.7 小结 88
第4章 继承 89
4.1 继承机制实例 89
4.2 继承机制的实现 90
4.2.1 继承的方式 90
4.2.2 一个更实际的例子 96
4.3 其他继承方式 100
4.3.1 zInherit 100
4.3.2 xbObjects 104
4.4 小结 108
第5章 浏览器中的JavaScript 109
5.1 HTML中的JavaScript 109
5.1.1 〈script/〉标签 109
5.1.2 外部文件格式 110
5.1.3 内嵌代码和外部文件 111
5.1.4 标签放置 111
5.1.5 隐藏还是不隐藏 113
5.1.6 〈noscript/〉标签 113
5.1.7 XHTML中的改变 114
5.2 SVG中的JavaScript 116
5.2.1 SVG基础 116
5.2.2 SVG中的〈script/〉标签 117
5.2.3 SVG中的标签放置 118
5.3 BOM 119
5.3.1 window对象 119
5.3.2 document对象 130
5.3.3 location对象 133
5.3.4 navigator对象 135
5.3.5 screen对象 136
5.4 小结 137
第6章 DOM基础 138
6.1 什么是DOM? 138
6.1.1 XML简介 138
6.1.2 针对XML的API 141
6.1.3 节点的层次 141
6.1.4 特定语言的DOM 144
6.2 对DOM的支持 145
6.3 使用DOM 145
6.3.1 访问相关的节点 145
6.3.2 检测节点类型 146
6.3.3 处理特性 147
6.3.4 访问指定节点 148
6.3.5 创建和操作节点 150
6.4 HTML DOM特征功能 155
6.4.1 让特性像属性一样 155
6.4.2 table方法 156
6.5 遍历DOM 158
6.5.1 NodeIterator 158
6.5.2 TreeWalker 163
6.6 测试与DOM标准的一致性 165
6.7 DOM Level 3 166
6.8 小结 166
第7章 正则表达式 167
7.1 正则表达式支持 167
7.1.1 使用RegExp对象 168
7.1.2 扩展的字符串方法 169
7.2 简单模式 170
7.2.1 元字符 170
7.2.2 使用特殊字符 170
7.2.3 字符类 172
7.2.4 量词 174
7.3 复杂模式 177
7.3.1 分组 177
7.3.2 反向引用 178
7.3.3 候选 179
7.3.4 非捕获性分组 180
7.3.5 前瞻 181
7.3.6 边界 182
7.3.7 多行模式 183
7.4 理解RegExp对象 184
7.4.1 实例属性 184
7.4.2 静态属性 185
7.5 常用模式 186
7.5.1 验证日期 187
7.5.2 验证信用卡号 188
7.5.3 验证电子邮件地址 192
7.6 小结 193
第8章 检测浏览器和操作系统 194
8.1 navigator对象 194
8.2 检测浏览器的方式 194
8.2.1 对象/特征检测法 194
8.2.2 user-agent字符串检测法 195
8.3 user-agent字符串简史 196
8.3.1 Netscape Navigator 3.0与 IE3.0 196
8.3.2 Netscape Communicator 4.0与IE 4.0 197
8.3.3 IE 5.0及更高版本 198
8.3.4 Mozilla 198
8.3.5 Opera 200
8.3.6 Safari 201
8.3.7 结语 201
8.4 浏览器检测脚本 201
8.4.1 方法学 202
8.4.2 第一步 202
8.4.3 检测Opera 204
8.4.4 检测Konqueror/Safari 206
8.4.5 检测IE 208
8.4.6 检测Mozilla 209
8.4.7 检测Netscape Communicator 4.x 210
8.5 平台/操作系统检测脚本 211
8.5.1 方法学 211
8.5.2 第一步 212
8.5.3 检测Windows操作系统 212
8.5.4 检测Macintosh操作系统 214
8.5.5 检测Unix操作系统 214
8.6 全部脚本 215
8.7 例子:登录页面 219
8.8 小结 224
第9章 事件 225
9.1 今天的事件 225
9.2 事件流 226
9.2.1 冒泡型事件 226
9.2.2 捕获型事件 227
9.2.3 DOM事件流 228
9.3 事件处理函数/监听函数 229
9.3.1 IE 230
9.3.2 DOM 231
9.4 事件对象 232
9.4.1 定位 233
9.4.2 属性/方法 233
9.4.3 相似性 235
9.4.4 区别 238
9.5 事件的类型 240
9.5.1 鼠标事件 240
9.5.2 键盘事件 244
9.5.3 HTML事件 246
9.5.4 变化事件 251
9.6 跨平台的事件 252
9.6.1 EventUtil对象 252
9.6.2 添加/删除事件处理函数 252
9.6.3 格式化event对象 254
9.6.4 获取事件对象 258
9.6.5 示例 259
9.7 小结 260
第10章 高级DOM技术 261
10.1 样式编程 261
10.1.1 DOM样式的方法 263
10.1.2 自定义鼠标提示 264
10.1.3 可折叠区域 265
10.1.4 访问样式表 266
10.1.5 最终样式 270
10.2 innerText和innerHTML 271
10.3 outerText和outerHTML 273
10.4 范围 274
10.4.1 DOM中的范围 274
10.4.2 IE中的范围 284
10.4.3 范围在实际中的应用 288
10.5 小结 288
第11章 表单和数据完整性 289
11.1 表单基础 289
11.2 对〈form/〉元素进行脚本编写 291
11.2.1 获取表单的引用 291
11.2.2 访问表单字段 291
11.2.3 表单字段的共性 292
11.2.4 聚焦于第一个字段 292
11.2.5 提交表单 293
11.2.6 仅提交一次 294
11.2.7 重置表单 295
11.3 文本框 295
11.3.1 获取/更改文本框的值 296
11.3.2 选择文本 297
11.3.3 文本框事件 298
11.3.4 自动选择文本 298
11.3.5 自动切换到下一个 299
11.3.6 限制textarea的字符数 300
11.3.7 允许/阻止文本框中的字符 301
11.3.8 使用上下按键操作数字文本 306
11.4 列表框和组合框 308
11.4.1 访问选项 309
11.4.2 获取/更改选中项 309
11.4.3 添加选项 310
11.4.4 删除选项 311
11.4.5 移动选项 312
11.4.6 重新排序选项 313
11.5 创建自动提示的文本框 313
11.5.1 匹配 314
11.5.2 内部机制 314
11.6 小结 316
第12章 表格排序 317
12.1 起点——数组 317
12.2 对单列的表格排序 319
12.2.1 比较函数 320
12.2.2 sortTable()函数 320
12.3 对多列表格进行排序 323
12.3.1 比较函数生成器 323
12.3.2 修改sortTable()方法 324
12.3.3 逆序排列 325
12.3.4 对不同的数据类型进行排序 327
12.3.5 高级排序 330
12.4 小结 334
第13章 拖放 335
13.1 系统拖放 335
13.1.1 拖放事件 336
13.1.2 数据传输对象dataTransfer 341
13.1.3 dragDrop()方法 345
13.1.4 优点及缺点 346
13.2 模拟拖放 346
13.2.1 代码 347
13.2.2 创建放置目标 349
13.2.3 优点及缺点 352
13.3 zDragDrop 352
13.3.1 创建可拖动元素 352
13.3.2 创建放置目标 353
13.3.3 事件 353
13.3.4 例子 354
13.4 小结 355
第14章 错误处理 356
14.1 错误处理的重要性 356
14.2 错误和异常 357
14.3 错误报告 358
14.3.1 IE(Windows) 358
14.3.2 IE(MacOS) 359
14.3.3 Mozilla(所有平台) 359
14.3.4 Safari(MacOS) 360
14.3.5 Opera 7(所有平台) 361
14.4 处理错误 362
14.4.1 onerror事件处理函数 362
14.4.2 try...catch语句 365
14.5 调试技巧 370
14.5.1 使用警告框 370
14.5.2 使用Java控制台 371
14.5.3 将消息写入JavaScript控制台 (仅限Opera 7+) 372
14.5.4 抛出自定义错误 372
14.5.5 JavaScript校验器 373
14.6 调试器 374
14.6.1 Microsoft Script Debugger 374
14.6.2 Venkman 376
14.7 小结 383
第15章 JavaScript中的XML 384
15.1 浏览器中的XML DOM支持 384
15.1.1 IE中的XML DOM支持 384
15.1.2 Mozilla中XML DOM支持 388
15.1.3 通用接口 393
15.2 浏览器中的XPath支持 403
15.2.1 XPath简介 403
15.2.2 IE中的XPath支持 404
15.2.3 Mozilla中的XPath支持 404
15.3 浏览器中的XSLT支持 408
15.3.1 IE中的XSLT支持 410
15.3.2 Mozilla中XSLT支持 413
15.4 小结 415
第16章 客户端与服务器端的通信 416
16.1 cookie 416
16.1.1 cookie的成分 416
16.1.2 其他安全限制 417
16.1.3 JavaScript中的cookie 417
16.1.4 服务器端的cookie 419
16.1.5 在客户端与服务器端之间传递cookie 422
16.2 隐藏框架 423
16.3 HTTP请求 426
16.3.1 使用HTTP首部 428
16.3.2 实现的复制品 429
16.3.3 进行GET请求 430
16.3.4 进行POST请求 430
16.4 LiveConnect请求 431
16.4.1 进行GET请求 431
16.4.2 进行POST请求 433
16.5 智能HTTP请求 435
16.5.1 get()方法 435
16.5.2 post()方法 438
16.6 实际使用 439
16.7 小结 439
第17章 Web服务 440
17.1 Web服务快速入门 440
17.1.1 Web服务是什么? 440
17.1.2 WSDL 441
17.2 IE中的Web服务 443
17.2.1 使用WebService组件 444
17.2.2 WebService组件例子 445
17.3 Mozilla中的Web服务 447
17.3.1 加强的特权 447
17.3.2 使用SOAP方法 448
17.3.3 使用WSDL代理 451
17.4 跨浏览器的方案 454
17.4.1 WebService对象 454
17.4.2 Temperature 服务 456
17.4.3 使用TemperatureService对象 458
17.5 小结 458
第18章 与插件进行交互 459
18.1 为何使用插件 459
18.2 流行的插件 460
18.3 MIME类型 460
18.4 嵌入插件 461
18.4.1 加入参数 461
18.4.2 Netscape 4.x 462
18.5 检测插件 462
18.5.1 检测Netscape式插件 463
18.5.2 检测ActiveX插件 467
18.5.3 跨浏览器检测 469
18.6 Java applet 470
18.6.1 嵌入applet 470
18.6.2 在JavaScript中引用applet 471
18.6.3 创建applet 471
18.6.4 JavaScript到Java的通信 472
18.6.5 Java到JavaScript的通信 475
18.7 Flash动画 477
18.7.1 嵌入Flash动画 477
18.7.2 引用Flash动画 478
18.7.3 JavaScript到Flash的通信 478
18.7.4 Flash到JavaScript通信 481
18.8 ActiveX控件 483
18.9 小结 485
第19章 部署问题 486
19.1 安全性 486
19.1.1 同源策略 486
19.1.2 窗口对象问题 487
19.1.3 Mozilla特有的问题 488
19.1.4 资源限制 490
19.2 国际化 491
19.2.1 使用JavaScript检测语言 491
19.2.2 策略 492
19.2.3 字符串的思考 492
19.3 优化JavaScript 495
19.3.1 下载时间 495
19.3.2 执行时间 499
19.4 知识产权的问题 512
19.4.1 混淆 512
19.4.2 Microsoft Script Encoder(仅IE) 513
19.5 小结 514
第20章 JavaScript的未来 515
20.1 ECMAScript 4 515
20.1.1 Netscape的提案 515
20.1.2 实现 521
20.2 ECMAScript for XML 522
20.2.1 途径 522
20.2.2 for each..in循环 524
20.2.3 新的类 524
20.2.4 实现 532
20.3 小结 532
索引

灌水者的Blog方式

灌水的人喜欢重复发帖,我就是这样一个家伙,呵呵
所以我打开了Live Space的电子邮件发布,Blogger又支持当发布新文章的时候,将新的文章,发送到指定的电子邮件,所以我可以通过Blogger,直接同步Live Space的内容,省去了我灌水的麻烦了,呵

Blogger is better than Live Space

Live Space(原来的MSN Space) 总的来说要更加像个交际社区,Blogger则是个更加专业的Blog系统。
Live Space现在相当臃肿和复杂,显示速度相当慢,虽然是界面可订制,但是和Blogger的可以直接编辑模版来说还差一些。
Blogger的操作总体来说还比较方便,新版的Blogger放弃了静态发布,使用了动态缓存,这样操作就更加方便了,将Blog发布到其他的网站上去的功能,似乎对一般人来说,也没有什么特别大的用途,Label的使用,也十分方便,虽然没有分类,另外就是除了不知道什么时候Blogspot会在被封之外。
Live Space的优势在于和Live Messenger的集成,同时现在似乎想把Messenger的一些功能都做到网站上去,更像一个SNS了。

《木桶定律》

西武/编著 机械工业出版社/出版

对于企业的发展,有一个非常恰当的比喻——“木桶定律”:一只木桶盛水的多少,并 不取决于桶壁上最长的那块木板,而恰恰取决于桶壁上最短的那块木板。人们把这一规律总 结成为“木桶定律”,“木桶理论”或“木桶效应”,本书中则统一称之为“木桶定律”。

根据这一核心内容,木桶定律还有三个推论:

——只有构成木桶的所有木板都足够高,木桶才能盛满水;

——所有木板比最低木板高出的部分都是没有意义的,高的越多,浪费越大;

——要想增加木桶的容量,应该设法加高最低木板的高度,这是最有效也是最直接的途 径。

木桶定律告诉我们:一只沿口不齐的木桶,盛水的多少,不在于木桶上最长的那块木板 ,而在于最短的那块木板,要想提高水桶的整体容量,不是去加长最长的那块木板,而是要 下功夫依次补齐最短的木板。

你可以很容易发现木桶和企业的共同之处,即构成系统的各个部分往往是优劣不齐的, 劣质部分往往决定了整个系统的水平。因为,最短的木板在对最长的木板起着限制和制约作 用,从而决定了整个系统的战斗力,影响了整个系统的综合实力。

因此,一个组织,不是单靠在某一方面的超群和突出就能立于不败之地的,而是要看整 体的状况和实力;一个团体,是否具有强大的竞争力,往往取决于其是否存在突出的薄弱环 节。劣势决定优势,劣势决定生死,这是市场竞争的残酷法则。

引申到企业管理中来,制约企业发展的往往是少数的,一二个重要的、关键的问题,如 管理能力、资金、技术、人才问题等。如果我们把企业当成一只木桶,而把 企业经营所需要 的各种资源与要素比喻成组成木桶的每一块木板,比如:资金、技术、人才、产品、营销、 管理等等,那么一个企业取得业绩的大小,则取决于 企业资源中最短缺的资源和要素。

换个角度说,在企业的销售能力、市场开发能力、服务能力、生产管理能力中,如果某 一方面的能力稍低,就很难在市场上长久获利。

其实,一个企业做的再好,管理上都有潜力可挖,换句话说,每个企业都有它的薄弱环 节,正是这些环节使企业许多资源闲置甚至浪费,发挥不了应有的作用。如常见的互相扯皮 、决策低效、实施不力等薄弱环节,都严重地影响并制约着企业的发展。

因此,企业要想做好、做强,必须从产品设计、价格政策、渠道建设、品牌培植、技术 开发、财务监控、队伍培育、文化理念、战略定位等各方面一一做到位才行。任何一个环节 太薄弱都有可能导致企业在竞争中处于不利位置,最终导致失败的恶果。

第一篇

测试一下~~