重磅推荐
【产品特色】


【编辑推荐】

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

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

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

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

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

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

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



【内容简介】

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


【作者简介】

  道格拉斯·克罗克福德(Douglas Crockford),一名来自Yahoo!的资深JavaScript架构师,以创造和维护JSON(Javascript Object Notation)格式而为大家所熟知。他定期在各类会议上发表有关高级JavaScript的主题演讲。他也是ECMAScript委员会的成员之一。


【目录】

前言
第1 章 精华 
为什么要使用JavaScript 
分析JavaScript 
一个简单的试验场 
第2 章 语法 
空白 
标识符 
数字 
字符串 
语句 
表达式 
字面量 
函数 
第3 章 对象 
对象字面量 
检索 
更新 
引用 
原型 
反射 
枚举 
删除 
减少全局变量污染 
第4 章 函数 
函数对象 
函数字面量 
调用 
参数 
返回 
异常 
扩充类型的功能 
递归 
作用域 
闭包 
回调 
模块 
级联 
柯里化 
记忆 
第5 章 继承 
伪类 
对象说明符 
原型 
函数化 
部件 
第6 章 数组 
数组字面量 
长度 
删除 
枚举 
容易混淆的地方 
方法 
指定初始值 
第7 章 正则表达式 
一个例子 
结构 
元素 
第8 章 方法 
Array 
Function 
Number 
Object 
RegExp 
String 
第9 章 代码风格 
第10 章 优美的特性 
附录A 毒瘤 
附录B 糟粕 
附录C JSLint  
附录D 语法图 
附录E JSON 
索引 


【免费在线读】

第4章

函数

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

函数对象

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

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

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

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

调用

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

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


返回顶部