本书的内容涵盖大量提升JavaScript性能的一些技巧、鲜为人知的写法,以及JavaScript在Web项目中某些智能的、经典的设计。本书在讲解过程中会有大量的例程和各种写法运行耗时的性能比较,给你展示了如何优化JavaScript的性能、一些非常独特而又能提升JavaScript性能的技巧(涵盖了当前网络中流行的JavaScript框架的大多数技巧)以及每天海量交易项目的JavaScript相关经验。其中,很多经验性的思想描述和方法可以应用于各种语言的编程。另外,本书还阐述了大量的JavaScript泛型设计,以及JavaScript在JSON-RPC和WebDAV中的应用并给出了相关的Java设计。
最后本书的所有例程代码将组合为一套功能强大的基于CSS、XPath选择器模型的JavaScript框架,使Web的开发就如同基于XPath的文档开发一样便捷。
本书适合于不同层次的JavaScript语言爱好者和技术人员学习和参考。
第1章 快速入门 1
1.1 阅读本书方式 1
1.1.1 融合注释,会说话的代码 1
1.1.2 交叉阅读 1
1.1.3 水到渠成 1
1.1.4 环境 1
1.2 规范和约定 2
1.2.1 注释约定 2
1.2.2 命名约定 2
1.2.3 辅助调试编码约定 3
1.3 本书公共代码(Jcore.js)导读 3
1.4 本书常见代码语法预阅 9
1.4.1 逗号运算符号 9
1.4.2 JavaScript独特的逻辑或、逻辑与运算符号 10
1.5 不推荐的中文命名方式 10
1.6 本书的写作思想 11
第2章 Function扩展和性能 12
2.1 关于Function的设计原则建议 14
2.2 arguments,length 16
2.3 toString 方法和valueOf 方法 17
2.4 Function的toString还有个妙用 17
2.5 绑定技术 18
HTML DOM对象事件动态行为绑定 22
2.6 JavaScript中的this( )是什么 27
2.7 绑定NaN、Infinity、null、undefined给对象,this会是什么 28
2.8 Function对象的apply 和call的区别 29
2.9 不用new的时候应该注意什么 31
2.9.1 一般直接调用方式 32
2.9.2 new调用 32
2.9.3 apply方式 32
2.9.4 call方式 32
2.9.5 本书推荐的巧妙方式 34
2.10 如何给你的function增加[ ]运算符号的支持 35
Web项目中HTML DOM的应用 37
2.11 如何让你的this加、减、乘、除 38
2.12 回调函数之函数“类型” 39
流行中的AJAX里的回调应用 40
2.13 打造方便的调试函数 48
2.14 匿名函数 49
2.15 匿名函数的递归调用 51
2.16 继承后如何在函数中访问Super的简化设计 52
2.17 静态函数、属性的访问问题 53
2.18 总结 56
第3章 Object扩展和性能及Web应用之神兵利器 58
3.1 typeof和constructor总结 59
3.2 高性能初始化 60
3.2.1 和普通Object初始化的性能比较 60
3.2.2 与function的比较 66
3.3 当心,这里的bind对我无用 69
3.4 完美之绑定(bind)将通用于Object、Function和其他对象,同时支持给Object增加[ ]运算符号 71
3.5 通用属性复制 76
3.6 “继承” 78
3.7 多态 79
3.8 推荐的对象模型方法[优点:一个名称空间,更便于内存才清理和释放] 79
3.9 Json引入 81
3.9.1 什么是Json 81
3.9.2 Json串形化有什么用途 82
3.9.3 我为Json修正了什么 82
3.9.4 Json使用举例 90
3.10 toString 91
3.11 融合HTML DOM支持的完美通用对象迭代器模型设计之each 91
3.12 通用迭代模式的元素属性的获取和设置 96
Style外观样式对象的获取和设置设计 105
3.13 通用对象排序模型设计之继承Array的相关功能 108
3.14 isPrototypeOf和hasOwnProperty 112
3.14.1 isPrototypeOf 112
3.14.2 hasOwnProperty 113
3.15 给所有JavaScript对象扩展属性、方法 113
3.16 打造“完美中的完美”的HTML DOM对象XPath对象选择器 115
3.16.1 XPath对象选择器架构说明 115
3.16.2 模式匹配函数定义说明 116
3.16.3 基本正则表达式模式详解 116
3.16.4 可扩展的转义及可扩展模块说明 119
3.16.5 选择后的对象集合如何支持HTML事件的动态绑定 125
3.16.6 实现代码及使用举例 126
3.17 不要被怪物吓倒:0.1234[“each”]、true[“each”] 152
3.18 泛型设计之保留四舍五入保留小数:toFixed 152
3.19 addClass、removeClass、toggleClass、mstgcls、remove的扩展设计 153
第4章 Array扩展和独辟蹊径的应用 156
4.1 高性能初始化 156
4.2 数字下标 159
4.3 文本下标 160
4.4 “特殊”数字下标揭秘 161
4.5 对象下标揭秘 164
4.6 迭代器 166
4.7 扩展Array及应用 166
4.7.1 Max、Min的扩展 167
4.7.2 indexOf、lastIndexOf的扩展 170
4.7.3 some、every、filter、forEach、map的扩展 172
4.7.4 克隆的实现 177
4.8 Array函数功能增强 179
4.8.1 push的增强,名为ps 179
4.8.2 pop的增强,名为pp 181
4.8.3 shift的增强,名为sft 182
4.8.4 unshift的增强,名为usft 184
4.8.5 splice的增强,名为splc 185
4.9 给自己定义的对象增加[ ]运算符号 187
第5章 String的扩展 188
5.1 如何将自定义对象直接赋予HTML DOM的innerText、innerHTML、value和其他属性 188
5.2 扩展自己的append方法 190
5.3 也谈StringBuffer 191
5.3.1 StringBuffer的实现 191
5.3.2 和String扩展的append性能比较 192
5.4 扩展自己的trim、trimAll、trimL、trimR 195
5.5 兼容Java时equals的扩展 197
5.6 把replace玩到颠峰 198
5.6.1 稍微高级的玩法设计 198
5.6.2 最迷惑人的隐匿方式设计 201
5.7 转换汉字及双字节字符为Unicode 203
5.7.1 Unicode编码 203
5.7.2 Unicode解码 204
5.8 加密我的String 205
加、解密的实现 205
5.9 Web常用验证功能集 209
5.9.1 身份证的验证和自动升位 209
5.9.2 E-mail的验证 212
5.9.3 数字范围验证及在Web开发中的应用、输入限制的设计 214
5.9.4 Web开发中IP地址的输入限制和验证 220
5.10 类似Java里的参数功能:toString的{1 ……n}参数模式的合成 224
5.11 String的Left、Right、Mid扩展 226
第6章 For的优化和性能提升 228
6.1 使用For…in应该注意什么 228
6.2 do{……} while()和for的性能比较 229
6.3 匿名函数对象对性能的提升 230
6.4 倒着循环对性能的提升 231
6.5 最佳性能for的设计 231
6.6 本章for各种实现性能综合比较 233
第7章 window对象的性能应用 237
7.1 alert,你让我的session去哪里了——如何让你的session永不过期的独有设计 237
7.2 神来之this,前面章节释疑 245
7.3 如何冻结你的业务办理系统的操作界面[支持iframe和frames的多层嵌套] 247
7.4 通用“多线程”模型设计 256
7.5 execScript实现你的js文件import功能 261
7.6 通用弹出窗口的对象共享应用设计,支持N层的弹出窗口及Web应用举例 262
7.7 createPopup的问题 266
仿效MSN的消息提示 268
7.8 记得释放你的内存onunload 269
表单修改状态在页面离开的时候进行提示保存 270
7.9 *、!、![全角]在getElementsByTag-Name的特殊功效,和document.all的区别 272
7.10 局部刷新技术 274
7.11 处理好你组件的宽度 277
7.12 任意可见对象大小的鼠标可交互调整的支持 279
第8章 Form开发经验之谈 284
8.1 通用获取输入对象元素value的设计 284
8.2 通用设置输入对象元素value的设计 287
8.3 异步支持设计 290
8.4 动态支持上传N个文件的封装设计 295
8.5 Web开发中自定义输入对象组和表达式求值的设计 309
8.6 Web开发中人性化输入值长度光标跟踪提示 311
8.7 如何在必输项没有输入值前其相关按钮、对象不可以操作 313
8.8 如何令表格中没有选择radio、checkbox输入对象的时候相应的
8.8 按钮、相应的对象不可以操作 316
8.9 AJAX让你的网站支持多语言——多语言的google Translate AJAX
8.8 的封装 319
第9章 HTC 334
9.1 自定义html界面元素标签 337
9.2 behavior的autocomplete下拉输入对象的设计 341
9.3 HTC的Bug 354
9.4 HTML DOM的resize鼠标的
9.4 支持设计 355
第10章 HTA 357
10.1 什么是HTA 357
10.2 HTA的特点 359
10.3 打造自己的功能强大的searchAndReplace 360
第11章 JavaScript封装其他语言能调用的DCOM 370
11.1 JS封装的DCOM的特点 371
11.2 JavaScript封装的DCOM的应用范围 373
11.3 支持功能强大的JavaScript动态语言的设计 373
11.4 支持功能强大的VBScript动态语言的设计 374
11.5 JScript.Encode解密的封装 374
11.6 Base64编、解码的封装 380
11.7 繁、简体汉字相互转换的封装 382
第12章 JavaScript其他优化 387
12.1 发布版本代码优化原则:能少则少 387
12.1.1 逗号的效益 387
12.1.2 return 的时候 388
12.1.3 new的时候 388
12.1.4 多余分号的清除 388
12.1.5 多行注释的清除 389
12.1.6 单行注释的清除 389
12.1.7 运算符号前后多余空格的清除 389
12.2 if… else if和switch的性能比较 389
12.3 Date到Number的性能比较 390
12.4 !!是什么 392
12.5 不推荐使用with关键字 392
12.6 很少用的几个关键字void,delete,instanceof, throw,finally,arguments 393
12.7 void用于函数的定义和调用 394
第13章 Web开发中Table相关经典设计 395
13.1 快速多列组合排序的设计 395
13.2 快速改变列风格 398
13.3 根据规则快速改变TD风格 400
13.4 自定义多列关系表达式动态求值并填写到指定列上 403
13.5 模拟多线程在表格快速排序中的应用 407
第14章 支持级联调用的JSON-RPCfor Java轻量级框架的实现及应用 411
14.1 配置 412
14.2 原理 412
14.3 框架实现及级联调用应用示例 414
14.4 可级联调用轻量级JSON-RPC框架在网站多语言智能转换中的应用 434
14.5 JSON-RPC在Web项目中的应用 439
第15章 JavaScript在WebDAV中的应用 442
15.1 什么是WebDAV 442
15.2 WebDAV有哪些优点 443
15.3 WebDAV配置 443
15.4 Office等类型文件的在线编辑 450
15.5 WebDAV folder在上传文件、目录等资源上的引用 452
附录A 454
附录B 459
参考文献 460
自从web2.0的诞生以来,JavaScript一直炙手可热,如火如荼,加之AJAX的大行其道,时至今日,JavaScript技术已被推到极致。它被应用在各种B/S架构的项目中、网站开发中,甚至一些嵌入式设备中。
JavaScript是一个很大的话题,本书不可能详细介绍其中的所有细节,例如JavaScript的ready、闭包、OOP等概念和原理。
本书的适用对象
本书面向所有希望了解和掌握JavaScript编程的开发人员。只要对JavaScript感兴趣,无论是做JavaScript嵌入式的开发人员,还是做.Net、Java的开发人员,还是已有一定的工作经验的读者,都能从书中找到自己所需要的内容。
本书的程序都是基于JavaScript XPath和泛型思想实现的,因此对那些想提高自己JavaScript优化水平和编程技巧的读者来说,也是一本很好的参考书。同时本书也适合作为FireFox和IE编程的参考书。
本书假定读者具有一定的JavaScript基础,如果读者不熟悉,也可以参考本书光盘中收录的巨经典的参考资料,然后再阅读本书。
本书的主要内容
本书讲解了大量的JavaScript编程技巧和优化技巧,并实现功能强大的CSS、XPath Selector。同时,本书还立足于项目经验,结合大量翔实的示例,总结性地讲解一些经典的设计,向读者展示了同类书籍和网络中所无法学到的编程技术和经验。
本书共分为15章,现简要介绍如下。
第1章 快速入门
本章介绍光盘的使用,以及本书的代码规范和约定,本书中常见的高性能特殊语法,与IE和FireFox下兼容的设计,和本书后面章节将用到的公共代码的讲解。
第2章 Function扩展和性能
本章介绍Function的扩展和高性能优化,如通用Super的实现,以及其作用域的应用,如apply和call在web事件编程处理中的特殊应用,以及匿名函数的递归,并实现支持gzip的AJAX框架,并能结合强大的XPath进行区域提交等项目经验应用。另外还讲解了如何给对象增加[ 0 ~ n]运算符。
第3章 Object扩展和性能及Web应用之神兵利器
本章介绍了大量的Object泛型设计,如完美的bind、each、addClass、removeClass、toggleClass、mstgcls、remove,并实现了功能强大的CSS、XPath Selector,是全书的核心,选择器同时还支持78种HTML DOM事件的快速简易绑定。
第4章 Array扩展和独辟蹊径的应用
本章介绍大量Array的泛型设计,介绍了Array性能的优化和大量的编程技巧,并介绍了同类书籍和网络中没有的各种Array下标的应用。
第5章 String的扩展
本章介绍大量String的泛型设计,并讲解了JavaScript的一些隐匿自动转换类型特性,以及一些性能优化技巧,和Web开发中常常遇到的编码、解码、replace技巧,与身份证的升位和验证、email和IP的验证,它们看上去都平淡无奇,却是有别于同类书籍中的介绍,它们都蕴藏着作者多年的项目经验。
第6章 For的优化和性能提升
本章介绍JavaScript编程语言中各种大循环的优化技巧,使得大循环代码能如同CPU流水线那样的原理高效的运作。
第7章 window对象的性能应用
本章基于前面第3章的XPath成果,释疑this,介绍alert导致的web项目中session的无故丢失和解决方案,实现JavaScript环境的并发多线程模型,介绍JavaScript对象在应用中的共享技巧,以及冻结业务办理系统的实现,同时介绍JavaScript对象的自动释放和Form表单改变的智能检测与实现。另外,本章还介绍,基于XPath实现快速简便令HTML DOM对象支持Resize的功能,包括表格列宽度的拖动。
第8章 Form开发经验之谈
本章结合作者多年的项目经验介绍了N个文件上传的封装,Form中元素之间关系的智能动态计算,以及光标跟随长度提示,与项目中经常遇到的界面区域可操作性的智能控制。8.9节中还介绍AJAX在google多语言翻译支持服务使用中的设计。
第9章 HTC
本章介绍htc在IE中behavior的autocomplete、HTML DOM Resize的应用,同时介绍了htc的不足之处。
第10章 HTA
本章介绍JavaScript在HTA(HTML小应用程序)中的应用,并给出功能强大的search And Replace示例,同时介绍了JSE技术。
第11章 JavaScript封装其他语言能调用的DCOM
本章介绍JavaScript如何封装文本实现的DCOM应用,并给出作者的一个开源项目的详尽示例,如ASP、PHP、PB等的调用示例,示例中给出JavaScript和VBScript共同封装的文本DCOM,在win32平台中的使用,如在ASP中的应用。
第12章 JavaScript其他优化
本章总结和完善前面章节中关于JavaScript优化的技巧和性能优化。
第13章 Web开发中Table相关经典设计
本章介绍大数据表格的排序,XPath在表格中的各种应用,如结合多线程在表格的快速排序应用,快速改变TD、列风格,自定义多列关系表达式动态求值并填写到指定列上(如:{2} = 4 * Math.log ({5}) + {8}, {3} = {2} / {7})。
第14章 支持级联调用的JSON-RPC for Java轻量级框架的实现及应用
本章设计了轻量级的JSON-RPC for Java AJAX框架,它优胜于http://oss.metaparadigm.com/jsonrpc/的是,支持在JavaScript中对Java对象的级联调用,而不需要额外的写JavaScript代码。同时,本章还描述、实现了JSON-RPC在网站多语言中支持框架,读者朋友可以直接应用于自己的网站,令自己的网站支持多种语言。
第15章 Java Script在WebDAV中的应用
本章介绍了WebDAV在Office文档在线编辑,以及微软操作系统中的资源管理器直接和WebDAB Folder中的资源相互复制、粘贴、剪切、拖放或编辑等JavaScript技术。
本书附光盘1张,提供了各章的源程序代码,共计大约348M,其中示例工程文件大约21.6M,“说明.txt”文件介绍了使用光盘的方法,以及光盘中各目录与本书的对应关系。
如何使用本书
本书提供了大量的实用代码和例程,在阅读本书时,读者最好能准备一台计算机,以便能随时尝试本书所提供的例程代码。如果你阅读中有什么疑问,请联系我:jcore.xt@gmail.com、jcore@sina.com、x...y...@tom.com。
为了能够正确地使用本书提供的示例程序,读者的计算机系统应该满足如下的基本要求:
CPU:486或更高
内存:64M或以上
操作系统:正版Windows 95/98/Me/XP sp2或Windows NT/2000/2003
编程环境:请见本书第1章1.1.4节
夏天
2008年1月于成都
无封面