重磅推荐
【编辑推荐】

淘宝|口碑UED老大经典译作

□ JS水平与本书翻阅次数正相关

“学习、理解、实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始。”

“这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或者想从事JavaScript开发的人阅读,并且非常需要反复阅读。”

“如果说犀牛展现了 JavaScript 特性的丰富和功能的强大,蝴蝶(书)则完美诠释了 JavaScript 语言轻巧简洁的特点。”

“它是一本很好的帮助你提高 JavaScript 水平的书籍,因为总结也是学习的重要过程。”

“信息密度如此之大,却毫不啰嗦,适合已有一门语言功底的人快速掌握JavaScript中值得学习和使用的部分,恰当而又全面。


【内容简介】

JavaScript 曾是“世界上*被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着Ajax 的到来,JavaScript“从*受误解的编程语言演变为*流行的语言”,这除了幸运之外,也证明了它其实是一门优秀的语言。Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看到一门优雅的、轻量级的和非常富有表现力的语言。作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言真正的精华部分,通过它们完全可以构建出优雅高效的代码。作者还通过附录列出了这门语言的毒瘤和糟粕部分,且告诉你如何避免它们。*后还介绍了JSLint,通过它的检验,能有效地保障我们的代码品质。 这是一本介绍JavaScript 语言本质的权威书籍,值得任何正在或准备从事JavaScript 开发的人阅读,并且需要反复阅读。学习、理解、实践大师的思想,我们才可能站在巨人的肩上,才有机会超越大师,这本书就是开始。


【目录】

目录

前言 xv
第1 章 精华 1
为什么要使用JavaScript 2
分析JavaScript 2
一个简单的试验场 4
第2 章 语法 5
空白 5
标识符 6
数字 7
字符串 8
语句 10
表达式 15
字面量 18
函数 19
第3 章 对象 20
对象字面量 20
检索 21
更新 22
引用 22
原型 22
反射 23
枚举 24
删除 24
减少全局变量污染 25
第4 章 函数 26
函数对象 26
函数字面量 27
调用 27
参数 30
返回 31
异常 31
扩充类型的功能 32
递归 33
作用域 36
闭包 36
回调 39
模块 40
级联 42
柯里化 43
记忆 43
第5 章 继承 46
伪类 46
对象说明符 49
原型 50
函数化 51
部件 55
第6 章 数组 57
数组字面量 57
长度 58
删除 59
枚举 59
容易混淆的地方 60
方法 60
指定初始值 62
第7 章 正则表达式 64
一个例子 65
结构 69
元素 71
第8 章 方法 77
Array 77
Function 83
Number 84
Object 85
RegExp 86
String 88
第9 章 代码风格 94
第10 章 优美的特性 98
附录A 毒瘤 101
附录B 糟粕 109
附录C JSLint 115
附录D 语法图 127
附录E JSON 138
索引 149


【免费在线读】

第4章

函数

JavaScript设计得出色之处的就是它的函数的实现。它几乎接近于完美。但是,想必你也能预料到,JavaScript的函数也存在瑕疵。函数包含一组语句,它们是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。函数用于指定对象的行为。一般来说,所谓编程,就是将一组需求分解成一组函数与数据结构的技能。

函数对象

JavaScript中的函数就是对象。对象是“名/值”对的集合并拥有一个连到原型对象的隐藏连接。对象字面量产生的对象连接到Object.prototype。函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。每个函数在创建时会附加两个隐藏属性:函数的上下文和实现函数行为的代码。

每个函数对象在创建时也随配有一个prototype属性。它的值是一个拥有constructor属性且值即为该函数的对象。这和隐藏连接到Function.prototype完全不同。这个令人费解的构造过程的意义将会在下个章节中揭示。

因为函数是对象,所以它们可以像任何其他的值一样被使用。函数可以保存在变量、对象和数组中。函数可以被当做参数传递给其他函数,函数也可以再返回函数。而且,因为函数是对象,所以函数可以拥有方法。

函数的与众不同之处在于它们可以被调用。

调用

调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数还接收两个附加的参数:this和arguments。参数this在面向对象编程中非常重要,它的值取决于调用的模式。在JavaScript中一共有4种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。

调用运算符是跟在任何产生一个函数值的表达式之后的一对圆括号。圆括号内可包含零个或多个用逗号隔开的表达式。每个表达式产生一个参数值。每个参数值被赋予函数声明时定义的形式参数名。当实际参数(arguments)的个数与形式参数(parametem)的个数不匹配时,不会导致运行时错误。如果实际参数值过多了,超出的参数值会被忽略。


返回顶部