kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 典藏频道 > 工农林医、科学科普、IT网络

深入理解JavaScript(异步图书)

  • 作者:[美] Axel Rauschmayer
  • 体积:50.71 MB
  • 语言:中文
  • 日期:2018-03-05
  • 推荐:

简介:JavaScript是目前Web开发领域非常流行的一种编程语言,得到众多IT从业人员和编程爱好者的关注。本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新特性等内容;第4部分介绍技巧、工具和类库,帮助读者更好地运用JavaScript进行编程。本书内容由浅入深,非常适合想要快速学习JavaScript编程或者深入钻研JavaScript的读者参考。

电子书详细介绍

 JavaScript是目前Web开发领域非常流行的一种编程语言,得到众多IT从业人员和编程爱好者的关注。
本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新特性等内容;第4部分介绍技巧、工具和类库,帮助读者更好地运用JavaScript进行编程。
本书内容由浅入深,非常适合想要快速学习JavaScript编程或者深入钻研JavaScript的读者参考。

编辑推荐

本书针对JavaScript初学者,帮助读者掌握JavaScript开发的精髓。每一章从教授语言的一个主题开始,给出了实践以及解决实际缺陷的指南,然后深入到相关的信息。本书帮助入门的程序员理解基础知识,掌握核心实践,甚到深入了解一些实践方法的优缺点,做到知其然且知其所以然。 
《JavaScript启示录》一书作者Cody Lindley鼎力推荐 
喜欢,又或是不喜欢,JavaScript都在那里,日夜相随,不离不弃。JavaScript正越来越多地出现在我们的生活中,从浏览器到服务端,再到移动端。想要学习这种语言,或者深入了解一些你没有涉足的内容,本书正是你的选择,它既可以指引入门也能够带你深入JavaScript。作者是一位程序员,也曾在相同的处境中暮然回首,找到了真实的自己。 

本书通过4个独立部分引 领读者逐步接近JavaScript语言。首先,快速指引部分帮助你在JavaScript编程上变得富有成效。更有经验的程序员会返现有一个完整而易读的参考,深入覆盖了该语言的每个特性。 

本书包括以下内容: 
JavaScript快速上手:更习惯面向对象的编程?这个部分会帮你更快更好地开始学习JavaScript。 
背景:了解JavaScript的历史,以及它与其他语言之间的关系。 
深入JavaScript:详细学习ECMAScript 5,从语法,变量,函数,面向对象编程,再到正则表达式和JSON,以及大量的示例。 
技巧、工具和类库:对现有风格指引、实践、高阶技术、模块系统、包管理、构建工具进行调研和学习。

作者简介

Dr.Axel Rauschmayer 专攻JavaScript和Web开发领域。他写博客,教Ecmanauten,编辑JavaScript Weekly周刊,组织MunichJS用户组。Axel从1985年开始编程,1995年开始开发web应用。

目录

第1部分JavaScript快速上手 
第1章基础JavaScript 
1.1背景 
1.1.1JavaScript与ECMAScript 
1.1.2JavaScript的影响和本质 
1.2语法 
1.2.1语法概述 
1.2.2语句和表达式 
1.2.3分号 
1.2.4注释 
1.3变量和赋值 
1.3.1赋值 
1.3.2复合赋值运算符 
1.3.3标识符与变量名 
1.4值 
1.4.1原始值和对象 
1.4.2原始值 
1.4.3对象 
1.4.4undefined和null 
1.4.5使用typeof和instanceof对值分类 
1.5布尔值 
1.5.1真值与假值 
1.5.2二元逻辑运算符 
1.5.3等式运算符 
1.6数字 
1.7运算符 
1.8字符串 
1.8.1字符串运算符 
1.8.2字符串方法 
1.9语句 
1.9.1条件语句 
1.9.2循环语句 
1.10函数 
1.10.1函数声明的提升特性 
1.10.2特殊的变量arguments 
1.10.3参数太多或太少 
1.10.4可选参数 
1.10.5强制参数长度 
1.10.6将arguments转换为数组 
1.11异常捕获 
1.12严格模式 
1.13变量作用域和闭包 
1.13.1变量是函数作用域的 
1.13.2变量的提升特性 
1.13.3闭包 
1.13.4IIFE模式:引入一个新的作用域 
1.14对象和构造函数 
1.14.1单一对象 
1.14.2任意属性名 
1.14.3提取方法 
1.14.4方法中的函数 
1.14.5构造函数:对象工厂 
1.15数组 
1.15.1数组字面量 
1.15.2数组方法 
1.15.3遍历数组 
1.16正则表达式 
1.16.1test()方法:匹配吗 
1.16.2exec()方法:匹配以及捕获分组 
1.16.3replace()方法:搜索和替换 
1.17Math 
1.18标准库的其他功能 
第2部分背景 
第2章为什么选择JavaScript 
2.1JavaScript可以自由使用吗 
2.2JavaScript优雅吗 
2.3JavaScript有用吗 
2.3.1图形用户界面 
2.3.2其他技术补充完善JavaScript 
2.4JavaScript有什么好用的工具吗 
2.5JavaScript是否足够快 
2.6JavaScript是广泛使用的吗 
2.7JavaScript有前途吗 
2.8结论 
第3章JavaScript的性质 
3.1古怪和非官方特性 
3.2优雅部分 
3.3影响 
第4章JavaScript是如何创造出来的 
第5章标准化:ECMAScript 
第6章JavaScript的历史里程碑 
第3部分深入JavaScript 
第7章JavaScript的语法 
7.1语法概览 
7.2注释 
7.3表达式与语句 
7.3.1表达式 
7.3.2语句 
7.4控制流语句和块 
7.5使用分号的规则 
7.5.1以块结束的语句后面没有分号 
7.5.2空语句 
7.5.3自动分号插入 
7.6合法标识符 
7.7数字字面量的方法调用 
7.8严格模式 
7.8.1启用严格模式 
7.8.2严格模式:建议与注意事项 
7.8.3严格模式中,变量必须被声明 
7.8.4严格模式下的函数 
7.8.5严格模式中,设置或者删除不可改变的属性会抛出异常 
7.8.6严格模式中的不合格标识符不能删除 
7.8.7严格模式中,eval更加简洁 
7.8.8严格模式中禁用的特性 
第8章值 
8.1JavaScript中的类型体系 
8.1.1JavaScript类型 
8.1.2静态与动态 
8.1.3静态类型与动态类型 
8.1.4静态类型检查和动态类型检查 
8.1.5强制转换 
8.2原始值和对象 
8.2.1原始值 
8.2.2对象 
8.3undefined和null 
8.3.1undefined和null的出现场景 
8.3.2检测undefined和null 
8.3.3undefined和null的历史 
8.3.4修改undefined 
8.4原始值的包装对象 
8.4.1包装对象不同于原始值 
8.4.2原始值的包装与去包装 
8.4.3原始值从包装器借调方法 
8.5强制类型转换 
8.5.1强制类型转换会隐藏bug 
8.5.2转换成布尔值、数字、字符串和对象的函数 
8.5.3算法:ToPrimitive()—将值转换为原始值 
第9章运算符 
9.1运算符和对象 
9.2赋值运算符 
9.3等号运算符:===和== 
9.3.1严格相等(===,!==) 
9.3.2普通(宽松)相等(==,!=) 
9.3.3没有针对==的有效用例 
9.4排序运算符 
9.5加号运算符(+) 
9.6布尔运算符和数字运算符 
9.7特殊运算符 
9.7.1条件运算符(?:) 
9.7.2逗号运算符 
9.7.3void运算符 
9.8通过typeof和instanceof判断值类型 
9.8.1typeof:判断原始值 
9.8.2instanceof:检测对象是否是给定构造函数的实例 
9.9对象运算符 
第10章布尔类型 
10.1转换成布尔值 
10.1.1手动转换为布尔值 
10.1.2真值和假值 
10.2逻辑运算符 
10.2.1二元逻辑运算符:与(&&)和或(||) 
10.2.2逻辑与(&&) 
10.2.3逻辑或(||) 
10.2.4逻辑非(!) 
10.3等号运算符、排序运算符 
10.4Boolean函数 
第11章数字 
11.1数字字面量 
11.1.1说明 
11.1.2在字面量上调用方法 
11.2转换成数字 
11.2.1手动转换为数字 
11.2.2parseFloat() 
11.3特殊的数字值 
11.3.1NaN 
11.3.2Infinity 
11.3.3两个0 
11.4数字的内部表示 
11.5处理舍入错误 
11.6JavaScript中的整型 
11.6.1整型的范围 
11.6.2将整型表示为浮点数字 
11.6.3安全的整型 
11.7转换成整数 
11.7.1通过Math.floor(),Math.ceil()和Math.round()得到整数 
11.7.2通过定制函数ToInteger()得到整数 
11.7.3通过位运算符得到32位整数 
11.7.4通过parseInt()得到整数 
11.8算术运算符 
11.9位运算符 
11.9.1背景知识 
11.9.2位运算非操作符 
11.9.3二进制位运算符 
11.9.4位运算移位操作符 
11.10Number函数 
11.11Number构造器属性 
11.12Number原型方法 
11.12.1Number.prototype.toFixed(fractionDigits?) 
11.12.2Number.prototype.toPrecision(precision?) 
11.12.3Number.prototype.toString(radix?) 
11.12.4Number.prototype.toExponential(fractionDigits?) 
11.13用于数字的函数 
11.14本章参考资料 
第12章字符串 
12.1字符串字面量 
12.2字符串字面量中的转义字符 
12.3字符访问 
12.4转换为字符串 
12.5字符串比较 
12.6字符串拼接 
12.6.1合并:加号(+)运算符 
12.6.2合并:拼接字符串数组 
12.7字符串函数 
12.8字符串构造器方法 
12.9字符串length属性 
12.10字符串原型方法 
12.10.1提取子字符串 
12.10.2字符串的变换 
12.10.3字符串的检索和比较 
12.10.4支持正则表达式的方法 
第13章语句 
13.1声明和变量赋值 
13.2循环语句和条件语句的主体 
13.3循环 
13.3.1循环的机制 
13.3.2while 
13.3.3do—while 
13.3.4for 
13.3.5for—in 
13.3.6foreach—in 
13.4条件语句 
13.4.1if—then—else 
13.4.2switch 
13.5with语句 
13.5.1语法与语义 
13.5.2with语句已被废弃 
13.5.3废弃with的原因 
13.6debugger语句 
第14章异常捕获 
14.1什么是异常捕获 
14.2JavaScript中的异常捕获 
14.2.1throw 
14.2.2try—catch—finally 
14.2.3例子 
14.3Error构造器 
14.4栈跟踪 
14.5实现一个自己的异常构造器 
第15章函数 
15.1JavaScript中函数的3种形式 
15.2术语:“形参”和“实参” 
15.3定义函数 
15.3.1函数表达式 
15.3.2函数声明 
15.3.3Function构造器 
15.4函数提升 
15.5函数的名称 
15.6哪个更好,函数声明还是函数表达式 
15.7控制函数调用:call(),apply()和bind() 
15.7.1func.apply(thisValue,argArray) 
15.7.2func.bind(thisValue,arg1,...,argN) 
15.8参数缺失或者超出时的处理 
15.8.1通过索引访问所有参数:神奇的arguments变量 
15.8.2强制性参数,限制参数数量的最小值 
15.8.3可选参数 
15.8.4模拟参数的引用传递 
15.8.5陷阱:非预期的可选参数 
15.9具名参数 
15.9.1具名参数可作为描述信息 
15.9.2可选的具名参数 
15.9.3在JavaScript中模拟具名参数 
第16章变量:作用域、环境和闭包 
16.1定义变量 
16.2背景知识:静态性和动态性 
16.3背景知识:变量的作用域 
16.4变量以函数为作用域 
16.5变量声明的提前 
16.6通过IIFE引入新的作用域 
16.6.1IIFE变体:前缀运算符 
16.6.2IIFE变体:预内置表达式上下文 
16.6.3IIFE变体:传参的IIFE 
16.6.4IIFE的应用 
16.7全局变量 
16.7.1最佳实践:避免创建全局变量 
16.7.2模块系统可以减少全局变量的引入 
16.8全局对象 
16.8.1跨平台兼容 
16.8.2window的使用场景 
16.9环境:变量的管理 
16.10闭包:使得函数可以维持其创建时所在的作用域 
16.10.1通过环境来控制闭包 
16.10.2陷阱:不经意间的环境共用 
第17章对象与继承 
17.1第1层:单一对象 
17.1.1属性的种类 
17.1.2对象字面量 
17.1.3点运算符(.):通过固定键值访问属性 
17.1.4特殊的属性键 
17.1.5中括号操作符(()):通过计算出的键访问属性 
17.2把任意值转化为对象 
17.3this作为函数和方法的隐式参数 
17.3.1在调用函数时设置this:call(),apply()和bind() 
17.3.2“用于构造函数的apply()”详细阐述了如何配合构造函数 
使用apply() 
17.3.3用于构造函数的apply() 
17.3.4缺陷:提取方法时丢失this 
17.3.5缺陷:方法中的函数会掩盖this 
17.4第2层:对象间的原型关系 
17.4.1继承 
17.4.2覆写 
17.4.3通过原型在对象间共享数据 
17.4.4获取和设置原型 
17.4.5特殊属性__proto__ 
17.4.6设置和删除仅影响自有属性 
17.5遍历和检测属性 
17.5.1列出自有的属性键 
17.5.2列出所有的属性键 
17.5.3检测属性是否存在 
17.5.4示例 
17.6最佳实践:遍历自有属性 
17.7访问器(getter和setter) 
17.7.1通过对象字面量定义访问器 
17.7.2通过属性描述符定义访问器 
17.7.3访问器和继承 
17.8属性特性和属性描述符 
17.8.1属性特性 
17.8.2属性描述符 
17.8.3通过描述符获取和定义属性 
17.8.4复制对象 
17.8.5属性:定义与赋值 
17.8.6继承的只读属性不能被赋值 
17.8.7枚举性:最佳实践 
17.9保护对象 
17.9.1防止扩展 
17.9.2封闭 
17.9.3冻结 
17.9.4缺陷:保护是浅层的 
17.10第3层:构造函数—实例工厂 
17.10.1JavaScript中new操作符的实现 
17.10.2术语:两个原型 
17.10.3实例的constructor属性 
17.10.4instanceof运算符 
17.10.5实现构造函数的小技巧 
17.11原型属性中的数据 
17.11.1对于实例属性,避免使用带初始值的原型属性 
17.11.2避免非多态的原型属性 
17.11.3多态的原型属性 
17.12保持数据私有性 
17.12.1构造函数环境中的私有数据(Crockford私有模式) 
17.12.2使用标记的键的属性保存私有数据 
17.12.3使用具体化键的属性保存私有数据 
17.12.4通过IIFE保持全局数据私有 
17.13第4层:构造函数之间的继承 
17.13.1继承实例属性 
17.13.2继承原型属性 
17.13.3确保instanceof正常工作 
17.13.4覆写方法 
17.13.5父调用 
17.13.6避免硬编码父构造函数的名字 
17.13.7示例:构造函数继承 
17.13.8示例:内建构造函数的继承层次结构 
17.13.9反模式:原型是父构造函数的实例 
17.14所有对象的方法 
17.14.1转换为原始值 
17.14.2Object.prototype.toLocaleString() 
17.14.3原型式继承和属性 
17.15泛型方法:借用原型方法 
17.15.1通过字面量访问Object.prototype和Array.prototype 
17.15.2调用泛型方法的例子 
17.15.3类似数组的对象和泛型方法 
17.15.4所有泛型方法列表 
17.16缺陷:Object作为Map使用 
17.16.1缺陷1:继承影响读取属性 
17.16.2缺陷2:覆写会影响调用方法 
17.16.3缺陷3:特殊属性__proto__ 
17.16.4字典模式:没有原型的对象更适合用作映射 
17.16.5最佳实践 
17.17备忘录:对象的使用 
第18章数组 
18.1概述 
18.1.1数组是映射,不是元组 
18.1.2数组也可以具有属性 
18.2创建数组 
18.2.1数组构造函数 
18.2.2多维数组 
18.3数组索引 
18.3.1操作符in与索引 
18.3.2删除数组元素 
18.3.3数组索引的细节 
18.4长度 
18.4.1手动增加数组的长度 
18.4.2减少数组的长度 
18.4.3最大长度 
18.5数组中的“空缺” 
18.5.1创建空缺 
18.5.2稀疏数组和密集数组 
18.5.3哪些操作会忽略空缺,而哪些不会 
18.5.4移除数组中的空缺 
18.6数组构造函数 
18.7数组原型方法 
18.8添加和删除元素(破坏性地) 
18.9排序和颠倒元素顺序(破坏性地) 
18.9.1比较数字 
18.9.2比较字符串 
18.9.3比较对象 
18.10合并、切分和连接(非破坏性地) 
18.11值的查找(非破坏性地) 
18.12迭代(非破坏性地) 
18.12.1检测方法 
18.12.2转化方法 
18.12.3归约函数 
18.13缺陷:类数组对象 
18.14最佳实践:遍历数组 
第19章正则表达式 
19.1正则表达式语法 
19.1.1原子:常规 
19.1.2原子:字符类 
19.1.3原子:分组 
19.1.4量词 
19.1.5断言 
19.1.6析取(或) 
19.2Unicode和正则表达式 
19.3创建正则表达式 
19.3.1字面量与构造函数 
19.3.2标识 
19.3.3正则表达式的实例属性 
19.3.4几个创建正则表达式的例子 
19.4RegExp.prototype.test:是否存在匹配 
19.5String.prototype.search:匹配位置的索引 
19.6RegExp.prototype.exec:捕获分组 
19.6.1首次匹配(不设置标识/g) 
19.6.2全部匹配(设置标识/g) 
19.7String.prototype.match:捕获分组或返回所有匹配的子字符串 
19.8String.prototype.replace:查找和替换 
19.8.1Replacement为字符串的情况 
19.8.2当Replacement为函数时 
19.9标识/g的一些问题 
19.10提示与技巧 
19.10.1引用文本 
19.10.2陷阱:缺少断言(例如;、$)的正则表达式可以在任意位置匹配 
19.10.3匹配一切或什么都不匹配 
19.10.4手动实现逆向查找 
19.11正则表达式备忘单 
第20章Date 
20.1Date构造函数 
20.2Date构造函数方法 
20.3Date原型方法 
20.3.1时间单位的getter和setter方法 
20.3.2各种各样的getter和setter方法 
20.3.3将日期转换成字符串 
20.4日期和时间格式 
20.4.1日期格式(无时间) 
20.4.2时间格式(无日期) 
20.4.3日期时间格式 
20.5时间值:从1970—01—01开始的毫秒数 
第21章Math 
21.1Math属性 
21.2数值函数 
21.3三角函数 
21.4其他函数 
第22章JSON 
22.1背景 
22.1.1数据格式 
22.1.2历史 
22.1.3语法 
22.2JSON.stringify(value,replacer?,space?) 
22.2.1被JSON.stringify()忽略的数据 
22.2.2toJSON()方法 
22.3JSON.parse(text,reviver?) 
22.4通过节点访问函数转换数据 
22.4.1JSON.stringify() 
22.4.2JSON.parse() 
第23章标准全局变量 
23.1构造器 
23.2Error构造器 
23.3非构造器函数 
23.3.1文字的编码和解码 
23.3.2数值归类与数值转换 
23.4通过eval()和newFunction()来动态执行JavaScript代码 
23.4.1使用eval()执行代码 
23.4.2通过newFunction()执行代码 
23.4.3eval()与newFunction()比较 
23.4.4最佳实践 
23.4.5结论 
23.5ConsoleAPI 
23.5.1ConsoleAPI在各引擎的标准程度如何 
23.5.2简单的日志记录 
23.5.3检查和计数 
23.5.4格式化的日志 
23.5.5性能和时间 
23.6名称空间和特殊值 
第24章编码和JavaScript 
24.1Unicode历史 
24.2Unicode中的重要概念 
24.3码位 
24.4Unicode编码 
24.5JavaScript源码和Unicode 
24.5.1内部源码转化 
24.5.2源码外部转化 
24.6JavaScript字符串和Unicode 
24.6.1转义序列 
24.6.2通过转义引用星际平面的字符 
24.6.3字符长度计算 
24.6.4Unicode正常化 
24.7JavaScript正则表达式和Unicode 
24.7.1匹配任意的码元以及任意的码位 
24.7.2库 
24.7.3推荐阅读的章节资源 
第25章ECMAScript5的新特性 
25.1新特性 
25.2语法的改变 
25.3标准库的新功能 
25.3.1元编程 
25.3.2新方法 
25.3.3JSON 
25.4兼容旧浏览器的小贴士 
第4部分技巧、工具和类库 
第26章元编程风格指南 
26.1现有风格指南 
26.2通用技巧 
26.2.1代码应该具有一致性 
26.2.2代码应该易于理解 
26.3普遍认可的最佳实践 
26.3.1括号风格 
26.3.2推荐字面量而不是构造函数 
26.3.3不要自作聪明 
26.3.4可接受的技巧 
26.4具有争议的规则 
26.4.1语法 
26.4.2变量 
26.4.3面向对象 
26.4.4其他 
26.5结论 
第27章调试的语言机制 
第28章子类化内置构造函数 
28.1术语 
28.2障碍1:具有内部属性的实例 
28.2.1障碍1的解决方法 
28.2.2注意 
28.3障碍2:内置的构造函数不能作为方法调用 
28.4另一种解决方案:委托 
第29章JSDoc:生成API文档 
29.1JSDoc基础 
29.1.1语法 
29.1.2命名类型 
29.2基础的标签 
29.3文档记录函数和方法 
29.4行内类型信息(“行内文档注释”) 
29.5文档记录变量、参数和实例属性 
29.6文档记录类 
29.6.1通过构造函数定义类 
29.6.2通过对象字面量定义类 
29.6.3通过带有@constructs方法的对象字面量定义类 
29.6.4子类 
29.7其他有用的标签 
第30章类库 
30.1shim和polyfill 
30.2四个语言类库 
30.3ECMAScript的国际化API 
30.3.1ECMAScript的国际化API,第1版 
30.3.2它是怎么样的标准呢 
30.3.3我们可以用它做什么 
30.3.4延伸阅读 
30.4JavaScript资源目录 
第31章模块系统和包管理器 
31.1模块系统 
31.2包管理器 
31.3简单粗暴的模块实现 
第32章其他工具 
第33章接下来该做什么

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×