小苏子
小苏子PDF在线图书

JavaScript编程全解 内容简介

JavaScript编程全解 内容简介

JavaScript编程全解 目录

JavaScript编程全解 精彩文摘

《图灵程序设计丛书:JavaScript编程全解》全方位地介绍了JavaScript开发中的各个主题,无论是前端还是后端的JavaScript开发者都可以在本书中找到自己需要的内容。本书对HTML5、Web API、Node.js及WebSocket等的热门技术也作了深入浅出的介绍,并提供了大量实际应用范例。《图灵程序设计丛书:JavaScript编程全解》语法说明系统深入、示例代码规范详细,对容易产生问题之处均做了重点说明,不仅适合初学者入门,而且有经验的JavaScript开发人员、项目负责人也能从中受益。第1部分 JavaScript概要第1章 JavaScript概要1.1 JavaScript概要1.2 JavaScript的历史1.3 ECMAScript1.3.1 JavaScript的标准化1.3.2 被放弃的ECMAScript第4版1.4 JavaScript的版本1.5 JavaScript实现方式1.6 JavaScript运行环境1.6.1 核心语言1.6.2 宿主对象1.7 JavaScript相关环境1.7.1 库1.7.2 源代码压缩1.7.3 集成开发环境第2部分 JavaScript的语言基础第2章 JavaScript基础2.1 JavaScript的特点2.2 关于编排格式2.3 变量的基础2.3.1 变量的使用方法2.3.2 省略var2.3.3 常量2.4 函数基础2.4.1 函数的定义2.4.2 函数的声明与调用2.4.3 匿名函数2.4.4 函数是一种对象2.5 对象的基础2.5.1 对象的定义2.5.2 对象字面量表达式与对象的使用2.5.3 属性访问2.5.4 属性访问(括号方式)2.5.5 方法2.5.6 new表达式2.5.7 类与实例2.5.8 对类的功能的整理2.5.9 对象与类型2.6 数组的基础第3章 JavaScript的数据类型3.1 数据类型的定义3.1.1 在数据类型方面与Java作比较3.1.2 基本数据类型和引用类型3.2 内建数据类型概要3.3 字符串型3.3.1 字符串字面量3.3.2 字符串型的运算3.3.3 字符串型的比较3.3.4 字符串类(String类)3.3.5 字符串对象3.3.6 避免混用字符串值和字符串对象3.3.7 调用String函数3.3.8 String类的功能3.3.9 非破坏性的方法3.4 数值型3.4.1 数值字面量3.4.2 数值型的运算3.4.3 有关浮点数的常见注意事项3.4.4 数值类(Number类)3.4.5 调用Number函数3.4.6 Number类的功能3.4.7 边界值与特殊数值3.4.8 NaN3.5 布尔型3.5.1 布尔值3.5.2 布尔类(Boolean类)3.5.3 Boolean类的功能3.6 null型3.7 undefined型3.8 Object类型3.9 数据类型转换3.9.1 从字符串值转换为数值3.9.2 从数值转换为字符串值3.9.3 数据类型转换的惯用方法3.9.4 转换为布尔型3.9.5 其他的数据类型转换3.9.6 从Object类型转换为基本数据类型3.9.7 从基本数据类型转换为Object类型第4章 语句、表达式和运算符4.1 表达式和语句的构成4.2 保留字4.3 标识符4.4 字面量4.5 语句4.6 代码块(复合语句)4.7 变量声明语句4.8 函数声明语句4.9 表达式语句4.10 空语句4.11 控制语句4.12 if-else语句4.13 switch-case语句4.14 循环语句4.15 while语句4.16 do-while语句4.17 for语句4.18 for in语句4.18.1 数列与for in语句4.18.2 在使用for in语句时需要注意的地方4.19 for each in语句4.20 break语句4.21 continue语句4.22 通过标签跳转4.23 return语句4.24 异常4.25 其他4.26 注释4.27 表达式4.28 运算符4.29 表达式求值4.30 运算符的优先级以及结合律4.31 算术运算符4.32 字符串连接运算符4.33 相等运算符4.34 比较运算符4.35 in运算符4.36 instanceof运算符4.37 逻辑运算符4.38 位运算符4.39 赋值运算符4.40 算术赋值运算符4.41 条件运算符(三目运算符)4.42 typeof运算符4.43 new运算符4.44 delete运算符4.45 void运算符4.46 逗号(,)运算符4.47 点运算符和中括号运算符4.48 函数调用运算符4.49 运算符使用以及数据类型转换中需要注意的地方第5章 变量与对象5.1 变量的声明5.2 变量与引用5.2.1 函数的参数(值的传递)5.2.2 字符串与引用5.2.3 对象与引用相关的术语总结5.3 变量与属性5.4 变量的查找5.5 对变量是否存在的检验5.6 对象的定义5.6.1 抽象数据类型与面向对象5.6.2 实例间的协作关系与面向对象5.6.3 JavaScript的对象5.7 对象的生成5.7.1 对象字面量5.7.2 构造函数与new表达式5.7.3 构造函数与类的定义5.8 属性的访问5.8.1 属性值的更新5.8.2 点运算符与中括号运算符在使用上的区别5.8.3 属性的枚举5.9 作为关联数组的对象5.9.1 关联数组5.9.2 作为关联数组的对象的注意点5.10 属性的属性5.11 垃圾回收5.12 不可变对象5.12.1 不可变对象的定义5.12.2 不可变对象的作用5.12.3 实现不可变对象的方式5.13 方法5.14 this引用5.14.1 this引用的规则5.14.2 this引用的注意点5.15 apply与call5.16 原型继承5.16.1 原型链5.16.2 原型链的具体示例5.16.3 原型继承与类5.16.4 对于原型链的常见误解以及_proto_属性5.16.5 原型对象5.16.6 ECMAScript第5版与原型对象5.17 对象与数据类型5.17.1 数据类型判定(constructor属性)5.17.2 constructor属性的注意点5.17.3 数据类型判定(instance运算与isPrototypeOf方法)5.17.4 数据类型判定(鸭子类型)5.17.5 属性的枚举(原型继承的相关问题)5.18 ECMAScript第5版中的Object类5.18.1 属性对象5.18.2 访问器的属性5.19 标准对象5.20 Object类5.21 全局对象5.21.1 全局对象与全局变量5.21.2 Math对象5.21.3 Error对象第6章 函数与闭包6.1 函数声明语句与匿名函数表达式6.2 函数调用的分类6.3 参数与局部变量6.3.1 arguments对象6.3.2 递归函数6.4 作用域6.4.1 浏览器与作用域6.4.2 块级作用域6.4.3 let与块级作用域6.4.4 嵌套函数与作用域6.4.5 变量隐藏6.5 函数是一种对象6.6 Function类6.7 嵌套函数声明与闭包6.7.1 对闭包的初步认识6.7.2 闭包的原理6.7.3 闭包中需要注意的地方6.7.4 防范命名空间的污染6.7.5 闭包与类6.8 回调函数设计模式6.8.1 回调函数与控制反转6.8.2 JavaScript与回调函数第7章 数据处理7.1 数组7.1.1 JavaScript的数组7.1.2 数组元素的访问7.1.3 数组的长度7.1.4 数组元素的枚举7.1.5 多维数组7.1.6 数组是一种对象7.1.7 Array类7.1.8 数组对象的意义7.1.9 数组的习惯用法7.1.10 数组的内部实现7.1.11 数组风格的对象7.1.12 迭代器7.1.13 生成器7.1.14 数组的内包7.2 JSON7.2.1 JSON字符串7.2.2 JSON对象7.3 日期处理7.4 正则表达式7.4.1 正则表达式的定义7.4.2 正则表达式相关的术语7.4.3 正则表达式的语法7.4.4 JavaScript中的正则表达式7.4.5 正则表达式程序设计7.4.6 字符串对象与正则表达式对象第3部分 客户端JavaScript第8章 客户端JavaScript与HTML8.1 客户端JavaScript的重要性8.1.1 Web应用程序的发展8.1.2 JavaScript的性能提升8.1.3 JavaScript的作用8.2 HTML与JavaScript8.2.1 网页显示过程中的处理流程8.2.2 JavaScript的表述方式及其执行流程8.2.3 执行流程的小结8.3 运行环境与开发环境8.3.1 运行环境8.3.2 开发环境8.4 调试8.4.1 alert8.4.2 console8.4.3 onerror8.4.4 Firebug, Web Inspector(Developer Tools), Opera Dragonfly8.5 跨浏览器支持8.5.1 应当提供支持的浏览器8.5.2 实现方法8.6 Window对象8.6.1 Navigator对象8.6.2 Location对象8.6.3 History对象8.6.4 Screen对象8.6.5 对Window对象的引用8.6.6 Document对象第9章 DOM9.1 DOM的定义9.1.1 DOM Level 19.1.2 DOM Level 29.1.3 DOM Level 39.1.4 DOM的表述方式9.2 DOM的基础9.2.1 标签、元素、节点9.2.2 DOM操作9.2.3 Document对象9.3 节点的选择9.3.1 通过ID检索9.3.2 通过标签名检索9.3.3 通过名称检索9.3.4 通过类名检索9.3.5 父节点、子节点、兄弟节点9.3.6 XPath9.3.7 Selector API9.4 节点的创建与新增9.5 节点的内容更改9.6 节点的删除9.7 innerHTML/textContent9.7.1 innerHTML9.7.2 textContent9.8 DOM操作的性能第10章 事件10.1 事件驱动程序设计10.2 事件处理程序/事件侦听器的设定10.2.1 指定为HTML元素的属性10.2.2 指定为DOM元素的属性10.2.3 通过EventTarget.addEventListener()进行指定10.2.4 事件处理程序/事件侦听器内的this引用10.3 事件的触发10.4 事件的传播10.4.1 捕获阶段10.4.2 目标阶段10.4.3 事件冒泡阶段10.4.4 取消10.5 事件所具有的元素10.6 标准事件10.6.1 DOM Level 2中所定义的事件10.6.2 DOM Level 3中所定义的事件10.7 自定义事件第11章 客户端JavaScript实践11.1 样式11.1.1 样式的变更方法11.1.2 位置的设定11.1.3 位置11.1.4 动画11.2 AJAX11.2.1 异步处理的优点11.2.2 XMLHttpRequest11.2.3 基本的处理流程11.2.4 同步通信11.2.5 超时11.2.6 响应11.2.7 跨源限制11.2.8 跨源通信11.2.9 JSONP11.2.10 iframe攻击(iframe hack)11.2.11 window.postMessage11.2.12 XMLHttpRequest Level 211.2.13 跨源通信的安全问题11.3 表单11.3.1 表单元素11.3.2 表单控件11.3.3 内容验证11.3.4 可用于验证的事件11.3.5 使用表单而不产生页面跳转的方法第12章 库12.1 使用库的原因12.2 jQuery的特征12.3 jQuery的基本概念12.3.1 使用实例12.3.2 链式语法12.4 $函数12.4.1 抽取与选择器相匹配的元素12.4.2 创建新的DOM元素12.4.3 将已有的DOM元素转换为jQuery对象12.4.4 对DOM构造完成后的事件侦听器进行设定12.5 通过jQuery进行DOM操作12.5.1 元素的选择12.5.2 元素的创建·添加·替换·删除12.6 通过jQuery处理事件12.6.1 事件侦听器的注册·删除12.6.2 事件专用的事件侦听器注册方法12.6.3 ready()方法12.7 通过jQuery对样式进行操作12.7.1 基本的样式操作12.7.2 动画12.8 通过jQuery进行AJAX操作12.8.1 AJAX()函数12.8.2 AJAX()的包装函数12.8.3 全局事件12.9 Deferred12.9.1 Deferred的基本概念12.9.2 状态迁移12.9.3 后续函数12.9.4 并行处理12.10 jQuery插件12.10.1 使用jQuery插件12.10.2 创建jQuery插件12.11 与其他库共同使用12.11.1 $对象的冲突12.11.2 避免$对象的冲突12.12 库的使用方法第4部分 HTML5第13章 HTML5概要13.1 HTML5的历史13.2 HTML5的现状13.2.1 浏览器的支持情况13.2.2 Web应用程序与原生应用程序13.3 HTML5的概要第14章 Web应用程序14.1 History API14.1.1 History API的定义14.1.2 哈希片段14.1.3 接口14.2 ApplicationCache14.2.1 关于缓存管理14.2.2 缓存清单文件14.2.3 ApplicationCache API14.2.4 在线与离线第15章 与桌面应用的协作15.1 Drag Drop API15.1.1 Drag Drop API的定义15.1.2 接口15.1.3 基本的拖动与释放15.1.4 自定义显示15.1.5 文件的Drag-In/Drag-Out15.2 File API15.2.1 File API的定义15.2.2 File对象15.2.3 FileReader15.2.4 data URL15.2.5 FileReaderSync第16章 存储16.1 Web Storage16.1.1 Web Storage的定义16.1.2 基本操作16.1.3 storage事件16.1.4 关于Cookie16.1.5 命名空间的管理16.1.6 版本的管理16.1.7 对localStorage的模拟16.2 Indexed Database16.2.1 Indexed Database的定义16.2.2 基础架构16.2.3 连接数据库16.2.4 对象存储的创建16.2.5 数据的添加·删除·引用16.2.6 索引的创建16.2.7 数据的检索与更新16.2.8 数据的排序16.2.9 事务16.2.10 同步API第17章 WebSocket17.1 WebSocket概要17.1.1 WebSocket的定义17.1.2 现有的通信技术17.1.3 WebSocket的标准17.1.4 WebSocket的执行方式17.2 基本操作17.2.1 连接的建立17.2.2 消息的收发17.2.3 连接的切断17.2.4 连接的状态确认17.2.5 二进制数据的收发17.2.6 WebSocket实例的属性一览17.3 WebSocket实践17.3.1 Node.js的安装17.3.2 服务器端的实现17.3.3 客户端的实现17.3.4 客户端的实现2第18章 Web Workers18.1 Web Workers概要18.1.1 Web Workers的定义18.1.2 Web Workers的执行方式18.2 基本操作18.2.1 工作线程的创建18.2.2 主线程一侧的消息收发18.2.3 工作线程一侧的消息收发18.2.4 工作线程的删除18.2.5 外部文件的读取18.3 Web Worker实践18.3.1 工作线程的使用18.3.2 中断对工作线程的处理18.4 共享工作线程18.4.1 共享工作线程的定义18.4.2 共享工作线程的创建18.4.3 共享工作线程的消息收发18.4.4 共享工作线程的删除18.4.5 共享工作线程的应用实例第5部分 Web API第19章 Web API的基础19.1 Web API与Web服务19.2 Web API的历史19.2.1 Web抓取19.2.2 语义网19.2.3 XML19.2.4 Atom19.2.5 JSON19.2.6 SOAP19.2.7 REST19.2.8 简单总结19.3 Web API的组成19.3.1 Web API的形式19.3.2 Web API的使用19.3.3 RESTful API19.3.4 API密钥19.4 用户验证与授权19.4.1 Web应用程序的会话管理19.4.2 会话管理与用户验证19.4.3 Web API与权限19.4.4 验证与授权19.4.5 OAuth第20章 Web API的实例20.1 Web API的分类20.2 Google Translate API20.2.1 准备20.2.2 执行方式的概要20.2.3 使用了Web API的代码示例20.2.4 微件(Google Translate Element)20.3 Google Maps API20.3.1 Google Static Maps API20.3.2 我的地图20.3.3 Google Maps API的概要20.3.4 简单的Google Maps API示例20.3.5 事件20.3.6 Geolocation API与Geocoding API20.4 Yahoo! Flickr20.4.1 Flickr Web API的使用20.4.2 Flickr Web API的使用实例20.5 Twitter20.5.1 搜索API20.5.2 REST API20.5.3 Twitter JS API @anywhere20.5.4 Twitter Widget20.6 Facebook20.6.1 Facebook应用的发展历程20.6.2 Facebook的JavaScript API20.6.3 Facebook的插件20.7 OpenSocial第6部分 服务器端JavaScript第21章 服务器端JavaScript与Node.js21.1 服务器端JavaScript的动向21.2 CommonJS21.2.1 CommonJS的定义21.2.2 CommonJS的动向21.2.3 模块功能21.3 Node.js21.3.1 Node.js概要21.3.2 node指令21.3.3 npm与包21.3.4 console模块21.3.5 util模块21.3.6 process对象21.3.7 全局对象21.3.8 Node.js程序设计概要21.3.9 事件API21.3.10 缓冲21.3.11 流第22章 Node.js程序设计实践22.1 HTTP服务器处理22.1.1 HTTP服务器处理的基本流程22.1.2 请求处理22.1.3 响应处理22.1.4 POST请求处理22.2 HTTP客户端处理22.3 HTTPS处理22.3.1 通过openssl指令发布自签名证书的方法22.3.2 HTTPS服务器22.4 Socket.IO与WebSocket22.5 下层网络程序设计22.5.1 下层网络处理22.5.2 套接字的定义22.5.3 套接字程序设计的基本结构22.5.4 套接字程序设计的具体实例22.6 文件处理22.6.1 本节的范例代码22.6.2 文件的异步处理22.6.3 文件的同步处理22.6.4 文件操作相关函数22.6.5 文件读取22.6.6 文件写入22.6.7 目录操作22.6.8 对文件更改的监视22.6.9 文件路径22.7 定时器22.8 Express22.8.1 URL路由22.8.2 请求处理22.8.3 响应处理22.8.4 scaffold创建功能22.8.5 MVC架构22.8.6 模板语言Jade22.8.7 MongoDB(数据库)22.8.8 Mongoose的实例22.8.9 使用了Express与Mongoose的Web应用程序后记索引JavaScript 编程中有一个很麻烦的问题,即在不同的浏览器中其执行方式会有所不同。1.2 节中曾提到 JavaScript 早期的评价并不太好,其中一个很重要的原因就是,JavaScript 在不同的浏览器中的执行方式的确会有差别。许多开发者怨声不断,逐渐造成了一种 JavaScript 编程非常麻烦的印象。但如果冷静下来思考一下,就会发现 JavaScript 其实并没有所说的那么夸张。稍加了解就会发现,C/C++ 等其他一些语言,和如今的 JavaScript 一样,都衍生出了多种不同的实 现方式。它们虽然在遵循语言标准时,能够实现一定程度的可移植性,但对于不同平台(OS)的情况,其可移植性完全无法令人满意。PHP、Perl、Python、Ruby 等流行的脚本语言虽然在不同平台间也有着很高的可移植性,但这是因为它们基本上只有唯一一种实现方式。Java 确实有多种实现方式,也实现了很强的可移植性,不过这是由于它最初就在保证可移植性上花费了很大的精力,所以算是一个例外。把JavaScript 和 Java 作对比来得出其可移植性不强未免有些不妥。

赞(0)
未经允许不得转载:小苏子图书 » JavaScript编程全解 内容简介