《JavaScript王者归来》是本融知识传播与深度探索于一体的著作,它以一种循序渐进的方式,向读者全面展示了JavaScript的多面性,书中深入浅出地讲解了从基础语法到高级应用,不仅涵盖了实际编程技巧,还包括了作者对于编程哲学的精辟见解,这本书犹如一个密钥,为初学者解锁编程语言的大门,同样,对于经验丰富的Web开发者来说,它是探索更高层次编程思想的宝典,无论是探究null与undefined的奥秘,还是深入函数的诸多特性,如闭包和作用域链,这本书都能给予读者启迪,它不单是教你如何在互联网世界中生存,更重要的是教你如何在那里繁荣,通过阐明JavaScript的核心概念、数据类型、函数机制等,它帮助开发者避免常见的编程陷阱,同时也为编写高质量代码提供了坚实的理论基础。
内容简介
你手中的这本《JavaScript王者归来》不仅是一本传播知识的书,更是一本求道的书。
本书分为五个部分循序渐进地与读者讨论了JavaScript的方方面面,从简单的语言基础到丰富的实际应用再到深入剖析语言本质的高级话题,字里行间包含着作者多年工作中对JavaScript实践乃至程序设计思想的深入思考和总结。
本书揭开了JavaScript的面纱,绕过误解和虚幻的表象,引领你探索程序王国的奥妙。它既是一本为初学者准备的入门级教程,又是一本探寻程序设计思想本源的“魔法典籍”,也是一本Web开发工程师们需要的案头参考书。
本书是你进入脚本王国的一把钥匙,引导你领略脚本魔法的神奇魅力。它还是一本着眼于未来改变互联网的启蒙读物,在它的引领下,你将在互联网的世界里获得你所希望得到的知识、智慧、成就和快乐。
目录
- 第一部分概论
- 第1章从零开始
- 1.1为什么选择JavaScript?
- 1.2JavaScript的应用范围
- 1.3JavaScript的版本
- 1.4一些值得留意的特性禁忌及如何突破这些禁忌
- 1.5安全性和执行效率
- 1.6一个例子--JavaScript编写的计算器
- 1.7学习和使用JavaScript的几点建议
- 1.8关于本书的其余部分
- 第2章浏览器中的JavaScript
- 2.1嵌入网页的可执行内容
- 2.2赏心悦目的特效
- 2.3使用JavaScript来与用户交互
- 2.4绕开脚本陷阱2.5总结
- 第3章开发环境和调试方法
- 3.1我能用什么来编写脚本--适合编写JavaScript的文本编辑器
- 3.2来自浏览器的支持
- 3.3集成开发环境
- 3.4调试工具--提升开发效率的利器
- 3.5定位代码和调用堆栈
- 3.6浏览器捕获异常
- 3.7总结
- 第二部分JavaScript核心
- 第4章语言结构
- 4.1JavaScript的基本文法
- 4.2常量和变量
- 4.3表达式和运算符符
- 4.4控制语句句
- 4.5总结
- 第5章数据类型
- 5.1基本数据类型
- 5.2数组和对象
- 5.2.1数组
- 5.2.2对象--一个构造函数的例子
- 5.3函数类型--一个函数和闭包的例子
- 5.4神奇的null和undefined
- 5.4.1null
- 5.4.2undefined--独一无二的类型
- 5.5正则表达式
- 5.5.1正则表达式常量
- 5.5.2正则表达式对象
- 5.6值类型和引用类型
- 5.6.1什么是值和值的引用
- 5.6.2使用值和使用引用
- 5.6.3值与引用的相互转换:装箱和拆箱
- 5.7类型识别与类型转换
- 5.7.1运行时类型识别--两个运行的类型识别的例子
- 5.7.2类型的自动转换及其例子
- 5.7.3强制类型转换及其例子
- 5.7.4高级用法--一个自定义类型转换的例子
- 5.8警惕数值陷阱
- 5.8.1困惑--浮点数的精度问题
- 5.8.2误差的修正及其例子
- 5.9总结
- 第6章函数
- 6.1函数定义和函数调用
- 6.1.1函数的定义
- 6.1.1.1声明式函数定义与函数表达式及其例子
- 6.1.1.2JavaScript函数的奥妙——魔法代码
- 6.1.2函数的调用
- 6.2函数的参数
- 6.2.1形参与实参
- 6.2.2Arguments对象
- 6.2.2.1一个使用Arguments对象检测形参的例子
- 6.2.2.2一个使用Arguments对象接收任意个数参数的例子
- 6.2.2.3一个使用Arguments对象模拟函数重载的例子
- 6.2.3参数类型匹配--一个利用arguments实现函数重载机制的例子
- 6.3函数的调用者和所有者
- 6.3.1函数的调用者
- 6.3.2函数的所有者--一个为函数指定所有者的例子
- 6.3.3动态调用--外来的所有者
- 6.4函数常量和闭包
- 6.4.1匿名的函数
- 6.4.2函数引用
- 6.4.3函数参数和函数返回值及其例子
- 6.4.4高级用法--闭包作为局部域与延迟求值
- 6.5高级抽象--Function类型和函数模版
- 6.5.1动态创建函数--一个利用Function实现Lambda算子的例子
- 6.5.2模式--函数工厂及其实例
- 6.6总结
- 第7章对象
- 7.1什么是对象
- 7.2对象的属性和方法
- 7.2.1对象的内置属性
- 7.2.2为对象添加和删除属性
- 7.2.3反射机制--枚举对象属性
- 7.3对象的构造
- 7.3.1构造函数--一个双精度浮点数封装类的例子
- 7.3.2缺省构造和拷贝构造
- 7.3.3对象常量
- 7.4对象的销毁和存储单元的回收
- 7.5JavaScript的内置对象
- 7.5.1Math对象
- 7.5.2Date对象--创建一个简单的日历
- 7.5.3Error对象
- 7.5.4其他内置对象
- 7.5.5特殊的对象--全局对象与调用对象
- 7.6总结
- 第8章集合
- 8.1数组和数组元素
- 8.1.1数组的构造
- 8.1.2数组常量
- 8.1.3数组元素
- 8.2数组对象和方法
- 8.2.1查找元素
- 8.2.2添加和删除元素
- 8.2.3集合操作及其范例
- 8.2.3.1join()方法
- 8.2.3.2reverse()方法
- 8.2.3.3sort()方法
- 8.2.3.4concat()方法
- 8.2.3.5slice()方法
- 8.2.3.6splice()方法
- 8.2.3.7toSgring()方法和toLocaleString()方法
- 8.3哈希表
- 8.3.1什么是哈希表
- 8.3.2哈希表的构造
- 8.3.3实现一个简单的HashTable类型
- 8.4高级用法--集合操作和闭包
- 8.5总结
- 第9章字符串
- 9.1字符串的构造
- 9.1.1字符串常量
- 9.1.2转义序列
- 9.1.3字符串构造函数
- 9.2字符串的使用
- 9.2.1比较字符串
- 9.2.2抽取和检索子串
- 9.2.3连接拆分字符串
- 9.2.4字符串的模式匹配--一个字符串格式校验的例子
- 9.2.5其他方法
- 9.3字符串与字符数组
- 9.4字符串与文本处理--JavaScript棋谱阅读器(一)
- 9.4.1需求分析--什么是棋谱和棋谱阅读器
- 9.4.2系统设计--棋谱和棋盘数据的字符串描述
- 9.4.3系统实现--解析和处理棋谱
- 9.4.4完整的棋谱阅读器
- 9.5总结
- 第10章正则表达式
- 10.1什么是正则表达式
- 10.1.1正则表达式的概念
- 10.1.2JavaScript中的正则表达式
- 10.2正则表达式的规则
- 10.2.1直接量字符
- 10.2.2字符类和布尔操作
- 10.2.3重复
- 10.2.4选择、分组和引用
- 10.2.5指定匹配的位置
- 10.2.6标志——高级模式匹配的规则
- 10.3模式匹配
- 10.3.1用于模式匹配的String方法及其例子
- 10.3.2用于模式匹配的RegExp方法
- 10.3.2.1一个使用exec()方法从身份证号码获取生日的例子
- 10.3.2.2一个使用test()方法遍历字符串的例子
- 10.4关于正则表达式包装对象
- 10.4.1RegExp对象——利用正则表达式实现全文检索
- 10.4.2RegExp的实例属性
- 10.5强大的正则表达式
- 10.5.1分析正则表达式的局部
- 10.5.2一个例子--强大的在线编辑器
- 10.5.3构造新的文法--一个在JSVM中实现JSVM2解析器的例子
- 10.6高级用法
- 10.7用正则表达式处理文本
- 10.7.1创建一个计价公式编辑器
- 10.7.1.1需求分析--什么是计价公式编辑器
- 10.7.1.2系统实现--计价公式编辑器的实现
- 10.7.2创建一个同步滚动歌词播放器
- 10.7.2.1需求分析--什么是同步滚动歌词播放器
- 10.7.2.2系统设计与实现--处理LRC歌词
- 10.8总结
- 第三部分浏览器与DOM
- 第11章浏览器对象
- 11.1Window对象--最基本的浏览器对象
- 11.1.1Window对象概览
- 11.1.2Window对象的生命周期
- 11.1.3Window对象的属性和方法
- 11.1.4一个多窗口应用的例子
- 11.2Document对象--浏览器窗口文档内容的代表
- 11.2.1Document对象概览
- 11.2.2动态生成的文档
- 11.2.3Document对象的基本信息
- 11.2.4Document对象的外观属性
- 11.2.5Document子对象接口
- 11.2.5.1一个遍历Anchors对象的例子
- 11.2.5.2一个颠倒图片的例子
- 11.3对话框和状态栏
- 11.3.1创建一个简单对话框
- 11.3.2其他类型的对话框
- 11.3.2.1模拟对话框--创建一个窗口对话框及一个对话框阻塞进行的例子
- 11.3.2.2showModalDialog和showModelessDialog--非W3C或ECMAScrip标准
- 11.3.3状态栏
- 11.4框架--上层的Window对象
- 11.4.1多框架应用
- 11.4.2框架之间的关系
- 11.4.3框架的命名
- 11.4.4子框架中的JavaScript
- 11.4.5框架的应用--多页签显示
- 11.4.5.1什么是页签
- 11.4.5.2页签的实现--创建一个包含页签的页面
- 11.5表单和表单对象
- 11.5.1Form对象及其范例
- 11.5.2定义表单元素
- 11.5.3客户端表单校验及其例子
- 11.5.4创建一款通用的客户端表单校验组件
- 11.6其他内置对象
- 11.6.1Navigator对象--浏览器总体信息的代表
- 11.6.2Screen对象--提供显示器分辨率和可用颜色数量信息
- 11.6.3Location对象--当前窗口中显示文档的URL的代表
- 11.6.4History对象--一个有趣的对象
- 11.7总结
- 第12章文档对象模型
- 12.1什么是DOM
- 12.1.1把文档表示为树
- 12.1.2树的节点
- 12.1.3DOM对象的通用属性和方法
- 12.1.4HTML结构和DOM对象的关系--用JavaScript通过DOM来操作HTML文档
- 12.2DOM与浏览器实现
- 12.2.1关于DOMHTMLAPI
- 12.2.2DOM的级别和特性
- 12.2.3DOM的一致性
- 12.2.4差异性--浏览器的DOM方言
- 12.3一组“盒子”--DOM元素
- 12.3.1嵌套的“盒子”
- 12.3.2“盒子”和“盒子”内容的分类
- 12.4创建和删除节点
- 12.4.1构造全新的节点
- 12.4.2平面展开--通过文档元素直接创建
- 12.4.3回收空间--删除不用的节点
- 12.5访问和操纵DOM节点
- 12.5.1打开每一个盒子--遍历节点
- 12.5.2弄清层级关系--父子与兄弟
- 12.5.3如何搜索特定节点
- 12.5.4克隆节点--一个使用cloneNode()复制表格的例子
- 12.5.5移动节点及其范例
- 12.5.6关于添加新行和排序的小技巧
- 12.6读写数据--添加、修改和删除属性
- 12.7外观与行为
- 12.7.1DOM样式属性
- 12.7.2控制DOM元素的显示与隐藏
- 12.7.3改变颜色和大小--一个简单有趣的例子
- 12.7.4改变位置--创建一个绕圆圈旋转的文字
- 12.7.5编辑控制及其范例
- 12.7.6改变样式及其范例
- 12.7.7改变行为
- 12.8XMLDOM
- 12.8.1什么是XMLDOM
- 12.8.2如何使用XMLDOM--一个利用XML实现多级关联下拉选择框的例子
- 12.9总结
- 第13章事件处理
- 13.1什么是事件
- 13.1.1消息与事件响应
- 13.1.2浏览器的事件驱动机制
- 13.2基本事件处理
- 13.2.1事件和事件类型
- 13.2.2事件的绑定
- 13.2.3直接调用事件处理函数
- 13.2.4事件处理函数的返回值
- 13.2.5带参数的事件响应及其例子
- 13.2.6“this”关键字
- 13.3标准事件模型
- 13.3.1起泡和捕捉--浏览器的事件传播
- 13.3.2事件处理函数的注册
- 13.3.3把对象注册为事件处理程序
- 13.3.4事件模块和事件类型
- 13.3.5关于Event接口
- 13.3.5.1Event接口的属性和方法
- 13.3.5.2UIEvent接口的属性
- 13.3.5.3MouseEvent接口的属性
- 13.3.5.4MutationEvent接口
- 13.3.6混合事件模型
- 13.3.7合成事件
- 13.4浏览器的事件处理模型实现
- 13.4.1InternetExplorer事件模型
- 13.4.1.1关于IE事件注册
- 13.4.1.2IEEvent对象的属性
- 13.4.1.3IE中的事件起泡
- 13.4.2Netscape4事件模型
- 13.4.2.1Netscape4中的事件捕捉及其范例
- 13.4.2.2Netscape4Event对象的属性
- 13.5回调与用户自定义事件
- 13.5.1事件处理模式--一个实现简单事件处理模式的例子
- 13.5.2用户事件接口的定义
- 13.5.3事件代理和事件注册--一个实现标准事件接口的例子
- 13.5.4标准模式--事件分派和接收
- 13.6一个例子--增强数据表格
- 13.6.1什么是增强数据表格
- 13.6.2一个采用两重table嵌套方式固定表头的例子
- 13.6.3可变列宽的实现
- 13.6.4标记行--呈现有别于其他行的背景色
- 13.6.5小技巧--将代码添加到样式表
- 13.7总结
- 第14章级联样式表
- 14.1什么是级联样式表
- 14.1.1CSS样式和样式表
- 14.1.2CSS的标准化
- 14.1.3浏览器支持的CSS
- 14.2JavaScript与CSS
- 14.2.1CSS和DOM的关系
- 14.2.2CSS和IE的关系
- 14.2.3浏览器的CSS兼容性
- 14.3控制CSS改变页面风格
- 14.3.1实现结构与表现的分离及其范例
- 14.3.2使用JwaScript和CSS实现页面多种风格的实时替换
- 14.4总结
- 第15章数据存储的脚本化
- 15.1什么是cookie
- 15.1.1浏览器和客户端cookie
- 15.1.2cookie的属性
- 15.2cookie的客户端存取
- 15.2.1cookie的存储
- 15.2.2cookie的读取
- 15.3cookie的限制
- 15.4cookie示例--让问候更加温暖
- 15.5cookie对象的封装
- 15.6什么是userData
- 15.6.1浏览器和客户端userData
- 15.6.2userData的声明
- 15.6.3userData的属性和方法
- 15.7userData的客户端存取
- 15.7.1userData的存储和读取
- 15.7.2userData的安全性
- 15.8userData的限制
- 15.9userData与cookie的对比
- 15.10userData示例--一个利用userData实现客户端保存表单数据的例子
- 15.11总结
- 第四部分数据交互
- 第16章同步和异步
- 16.1什么是同步和异步
- 16.2超时设定和时间间隔
- 16.3定时器使用--侦听与拦截
- 16.3.1标准模式--监视器及其范例
- 16.3.2使用定时器时应当注意的问题
- 16.4一个例子--漂亮的Web时钟
- 16.4.1什么是Web时钟?
- 16.4.2最简单的Web时钟
- 16.4.3Web时钟的设计
- 16.4.4完整的Web时钟源代码
- 16.5总结
- 第17章XMLDOM和XMLHTTP
- 17.1什么是XMLDOM对象
- 17.1.1XMLDOM简介
- 17.1.2浏览器支持的XMLDOM接口
- 17.1.2.1XMLDOM标准接口
- 17.1.2.2IE的XMLDOM组件
- 17.1.2.3操作XML文档--一个使用MSXML操作XML文档的例子
- 17.2XMLDOM的版本兼容性--XMLDOM的跨浏览器应用
- 17.3XMLDOM的错误处理
- 17.3.1处理错误信息的ParseError对象
- 17.3.2包含错误信息的文档
- 17.4XMLDOM操作XML文档
- 17.4.1访问节点
- 17.4.2创建新节点
- 17.4.3移动和修改节点及其范例
- 17.4.4读写节点属性和读写数据
- 17.4.5保存文档
- 17.5一个例子--JavaScript棋谱阅读器(二)
- 17.5.1用XML描述棋谱
- 17.5.2将XML棋谱转换为SGF棋谱
- 17.6什么是XMLHTTP对象
- 17.6.1XMLHTTP对象简介
- 17.6.2浏览器支持的XMLHTTP对象
- 17.7通过XMLHTTP发送请求
- 17.7.1建立连接
- 17.7.2发送请求
- 17.8读取和设定HTTP头
- 17.8.1什么是HTTP头
- 17.8.2读取和设定HTTP头
- 17.9服务器应答
- 17.9.1同步和异步应答及其例子
- 17.9.2包含应答文本内容的ResponseText和ResponseXML
- 17.10总结
- 第18章Ajax简介
- 第19章标准和兼容性
- 第20章信息安全
- 第五部分超越JavaScript
- 第21章面向对象
- 第22章闭包与函数式编程
- 第23章模块级管理
- 第24章动态构建
- 第25章执行效率
- 25.1为什么要讨论执行效率
- 25.2封闭的代价
- 25.3盒子里的流火
- 25.4动态--魔鬼与天使
- 25.5让代码轻舞飞扬
- 25.6总结
- 第26章应用框架
- 26.1应用框架概览
- 26.2为什么要设计应用框架
- 26.3如何设计应用框架
- 26.4框架的实际应用--在Silverna2.0框架上开发的Widgets
- 26.5已存在的应用框架
- 26.6总结
内容覆盖面比较广,某些总结和经验类的话写得挺好,特别是在第一章看到“程序员的四个境界”的时候觉得是本好书。但越往后读越发现罗里吧嗦的废话超级多,特别是“关于什么什么的内容将在之后的第几章详细深入的讨论”这样的话多得让人想吐,甚至到20多章了还有,感觉好像故意把同一个内容放到不同章里讲又不讲详细从而把书整得更厚似的,严重影响阅读心情!
我是在掌握了 JavaScript DOM 编程 和 jQuery 以后决定回过头来系统和深入学习一下JavaScript这门语言的。
老实说,我并没有仔细看这本书,网上买回来以后快速阅读了第一部分的概述、第12章文档对象模型和第13章的事件处理后。。。有点小小的失望,总之月影同学的写作方式不适合我个人的阅读风格。无关紧要的内容在我看来相当累赘,占了整本书的大量篇幅。。。文章的结构不够紧凑,概念的讲解有些地方过于直白,不够专业。。还有,就是AJAX部分简直就是轻描淡写,几乎是没有什么啥实质性的内容。
总之,我个人认为对于像我们这群早已经习惯了规规矩矩教条式的技术书的同学来说,买此书之前请三思,改变一个人阅读方式所付出的成本是巨大滴~