第一图书网

JAVASCRIPT语言精髓与编程实践

周爱民 电子工业出版社
出版时间:

2008-3  

出版社:

电子工业出版社  

作者:

周爱民  

页数:

510  

Tag标签:

无  

内容概要

  本书详细讲述JavaScript作为一种混合式语言的各方面特性,包括过程式、面向对象、函数式和动态语言特性等,在动态函数式语言特性方面有着尤为细致的讲述。本书的主要努力之一,就是分解出这些语言原子,并重现将它们混合在一起的过程与方法。通过从复杂性到单一语言特性的还原过程,读者可了解到语言的本质,以及“层出不穷的语言特性”背后的真相。  本书主要的著述目的是基于一种形式上简单的语言来讲述“语言的本质及其应用”。本书详细讲述了通过框架执行过程来构造一个JavaScript扩展框架的方法,并完整地讲述了框架扩展中各种设计取舍,因此可以作为学习研究计算机程序设计语言时的参考,用以展示现实系统如何实现经典理论中的各种编程范型。

作者简介

周爱民,国内软件开发界资深软件工程师,从1996年开始涉足商业软件开发,历任部门经理、区域总经理、高级软件工程师、平台架构师等职。周爱民先生在软件开发、软件工程、团队建设以及部门管理方面经验丰富,是Borland Delphi产品技术专家,也是Qomo开源项目(JavaScript)的发起者。在JavaScript开发方面,有超过9年的实践经验。
  2003年5月,被美国Borland公司授予“Borland Delphi产品专家”称号,并授予“论坛特别贡献奖”。
  2004年8月,出版软件开发专著《Delphi源代码分析》,被业界誉为“Delphi领域精品著作”。
  2005年12月,发起JavaScript开源项目Qomolangma(Qomo),研究语言特性、框架设计与企业级应用库。
  2007年4月,出版软件工程专著《大道至简——软件工程实践者的思想》,被誉为“激荡新思的佳作”。
  2007年11月,参加CSDN主办的软件开发大会(SD2C),主讲“JavaScript引擎技术”。

书籍目录

第1部分 语言基础  第1章 十年JAVASCRIPT   1.1 网页中的代码    1.1.1 新鲜的玩意儿    1.1.2 第一段在网页中的代码    1.1.3 最初的价值   1.2 用JAVASCRIPT来写浏览器上的应用    1.2.1 我要做一个聊天室    1.2.2 Flash的一席之地    1.2.3 RWC与RIA之争   1.3 没有框架与库的语言能怎样发展呢?    1.3.1 做一个框架    1.3.2 重写框架的语言层    1.3.3 富浏览器端开发(RWC)与AJAX   1.4 为JAVASCRIPT正名    1.4.1 JavaScript    1.4.2 Core JavaScript    1.4.3 SpiderMonkey JavaScript    1.4.4 ECMAScript    1.4.5 JScript    1.4.6 总述   1.5 JAVASCRIPT的应用环境    1.5.1 宿主环境(host environment)    1.5.2 外壳程序(Shell)    1.5.3 运行期环境(runtime)  第2章 JAVASCRIPT的语法   2.1 语法综述    2.1.1 标识符所绑定的语义    2.1.2 识别语法错误与运行错误   2.2 JAVASCRIPT的语法:变量声明    2.2.1 变量的数据类型    2.2.2 变量声明    2.2.3 变量声明中的一般性问题   2.3 JAVASCRIPT的语法:表达式运算    2.3.1 一般表达式运算    2.3.2 逻辑运算    2.3.3 字符串运算    2.3.4 比较运算    2.3.5 赋值运算    2.3.6 函数调用    2.3.7 特殊作用的运算符    2.3.8 运算优先级   2.4 JAVASCRIPT的语法:语句    2.4.1 表达式语句    2.4.2 分支语句    2.4.3 循环语句    2.4.4 流程控制:一般子句    2.4.5 流程控制:异常   2.5 面向对象编程的语法概要    2.5.1 对象直接量声明与实例创建    2.5.2 对象成员列举、存取和删除    2.5.3 属性存取与方法调用    2.5.4 对象及其成员的检查    2.5.5 可列举性    2.5.6 默认对象的指定   2.6 运算符的二义性    2.6.1 加号“+”的二义性    2.6.2 括号“( )”的二义性    2.6.3 冒号“:”与标签的二义性    2.6.4 大括号“{ }”的二义性    2.6.5 逗号“,”的二义性    2.6.6 方括号“[ ]”的二义性 第2部分 语言特性及基本应用  第3章 JAVASCRIPT的非函数式语言特性   3.1 概述    3.1.1 命令式语言与结构化编程    3.1.2 结构化的疑难    3.1.3 “面向对象语言”是突破吗?    3.1.4 更高层次的抽象:接口    3.1.5 再论语言的分类    3.1.6 JavaScript的语源   3.2 基本语法的结构化含义    3.2.1 基本逻辑与代码分块    3.2.2 模块化的层次:语法作用域    3.2.3 执行流程及其变更    3.2.4 模块化的效果:变量作用域    3.2.5 语句的副作用   3.3 JAVASCRIPT中的原型继承    3.3.1 空对象(null)与空的对象    3.3.2 原型继承的基本性质    3.3.3 空的对象是所有对象的基础    3.3.4 构造复制?写时复制?还是读遍历?    3.3.5 构造过程:从函数到构造器    3.3.6 预定义属性与方法    3.3.7 原型链的维护    3.3.8 原型继承的实质   3.4 JAVASCRIPT的对象系统    3.4.1 封装    3.4.2 多态    3.4.3 事件    3.4.4 类抄写?或原型继承?    3.4.5 JavaScript中的对象(构造器)    3.4.6 不能通过继承得到的效果  第4章 JAVASCRIPT的函数式语言特性   4.1 概述    4.1.1 从代码风格说起    4.1.2 为什么常见的语言不赞同连续求值    4.1.3 函数式语言的渊源   4.2 函数式语言中的函数    4.2.1 函数是运算元    4.2.2 在函数内保存数据    4.2.3 函数内的运算对函数外无副作用   4.3 从运算式语言到函数式语言    4.3.1 JavaScript中的几种连续运算    4.3.2 运算式语言    4.3.3 如何消灭掉语句   4.4 函数:对运算式语言的补充和组织    4.4.1 函数是必要的补充    4.4.2 函数是代码的组织形式    4.4.3 重新认识“函数”    4.4.4 JavaScript语言中的函数式编程   4.5 JAVASCRIPT中的函数    4.5.1 可变参数与值参数传递    4.5.2 非惰性求值    4.5.3 函数是第一型    4.5.4 函数是一个值    4.5.5 可遍历的调用栈   4.6 闭包    4.6.1 什么是闭包    4.6.2 什么是函数实例与函数引用    4.6.3 (在被调用时,)每个函数实例至少拥有一个闭包    4.6.4 函数闭包与调用对象    4.6.5 函数实例拥有多个闭包的情况    4.6.6 语句或语句块中的闭包问题    4.6.7 闭包中的标识符(变量)特例    4.6.8 函数对象的闭包及其效果    4.6.9 闭包与可见性 第5章 JAVASCRIPT的动态语言特性   5.1 概述    5.1.1 动态数据类型的起源    5.1.2 动态执行系统的起源    5.1.3 脚本系统的起源    5.1.4 脚本只是一种表面的表现形式   5.2 动态执行(EVAL)    5.2.1 动态执行与闭包    5.2.2 动态执行过程中的语句、表达式与值    5.2.3 奇特的、甚至是负面的影响   5.3 动态方法调用(CALL与APPLY)    5.3.1 动态方法调用中指定this对象    5.3.2 丢失的this引用    5.3.3 栈的可见与修改    5.3.4 兼容性:低版本中的call()与apply()   5.4 重写    5.4.1 原型重写    5.4.2 构造器重写    5.4.3 对象成员的重写    5.4.4 宿主对重写的限制    5.4.5 引擎对重写的限制   5.5 包装类:面向对象的妥协    5.5.1 显式包装元数据    5.5.2 隐式包装的过程与检测方法    5.5.3 包装值类型数据的必要性与问题    5.5.4 其他直接量与相应的构造器   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.7.5 从引用到值:深入探究valueOf()方法    5.7.6 到字符串类型的显式转换 第3部分 编程实践  第6章 QOMO框架的核心技术与实现   6.1 QOMO框架的技术发展与基本特性    6.1.1 Qomo框架的技术发展    6.1.2 Qomo的体系结构    6.1.3 Qomo框架设计的基本原则   6.2 基于类继承的对象系统    6.2.1 Qomo类继承的基本特性    6.2.2 Qomo类继承的语法    6.2.3 Qomo类继承系统的实现    6.2.4 Qomo类继承系统的高级话题   6.3 多投事件系统    6.3.1 多投事件系统的基本特性与语法    6.3.2 多投事件系统的实现    6.3.3 多投事件的中断与返回值    6.3.4 多投事件系统的安全性   6.4 接口系统    6.4.1 基本概念与语法    6.4.2 接口实现    6.4.3 Qomo接口系统的高级话题    6.4.4 接口委托    6.4.5 Qomo接口系统的实现   6.5 命名空间    6.5.1 Qomo命名空间的复杂性    6.5.2 命名空间的使用    6.5.3 命名空间的实现   6.6 AOP    6.6.1 基本概念与语法    6.6.2 高级切面特性    6.6.3 Qomo中切面系统的实现   6.7 其他    6.7.1 装载、内联与导入    6.7.2 四种模板技术    6.7.3 出错处理    6.7.4 其他功能模块  第7章 一般性的动态函数式语言技巧   7.1 消除代码的全局变量名占用   7.2 一次性的构造器   7.3 对象充当识别器   7.4 识别NEW运算进行的构造器调用   7.5 使用直接量及其包装类快速调用对象方法   7.6 三天前是星期几?   7.7 使用对象的值含义来构造复杂对象   7.8 控制字符串替换过程的基本模式   7.9 实现二叉树   7.10 将函数封装为方法   7.11 使用WITH语句来替代函数参数传递   7.12 使用对象闭包来重置重写   7.13 构造函数参数   7.14 使用更复杂的表达式来消减IF语句   7.15 利用钩子函数来扩展功能   7.16 安全的字符串 附录A:术语表 附录B:主要引擎的特性差异列表 附录C:附图 附录D:参考书目

章节摘录

插图:

媒体关注与评论

  “这是一本闪烁着思考光芒的作品,它的精彩就在于作者深入的思考。”  ——蒋涛  “停下来,思考才是进步的本质。”  ——李维  “传达了探究工程本质的独立思考精神。”  ——谭群钊


编辑推荐

《JAVASCRIPT语言精髓与编程实践》适合于有编程经验的、想学习和掌握JavaScript的语言实现与扩展知识的开发者 。

图书封面

图书标签Tags

广告

下载页面


JAVASCRIPT语言精髓与编程实践 PDF格式下载



这是国人写的书,在国内技术原创书中属于稀有的“异数”,作者从语言本质的角度去写,写得极为深入,本人阅读后受益非浅。书中提到了《程序设计语言原理》、《程序设计语言实践之路》、《设计模式》、《JavaScript权威指南》和《JavaScript高级程序设计》等书,估计作者他都阅读了。读者在阅读这本书时也要看看相关章节,这样才能弄明白本书到底在讲什么。
  
  本书高屋建瓴,习惯用俯视而不是平视
  
  这本书以JavaScript的视角去看整个计算机语言的世界,小角度引来的大话题。作者从Pascal说到C++和Java,从他做的第一个Web应用到由他负责的开源框架,那是无一不谈,无一不扯啊。于是乎,作者个人的观点随着他的笔间时不时的会带出来,有些点呢不知道他是知道呢还是不知道,反正我是之前知道看了却反而不知道了。比如在冯诺依曼体系结构下的命令式编程语言发展史,之前本来是阅读了《程序设计语言原理(原书第8版)》书中的相关知识(见第1章),那里面讲得清楚明了,结果阅读了这本书中同样的内容章节后反而让本人弄得糊涂了。
  
  这本书的毛病也是国人原创书常见的毛病:本来一个点能说清楚的,结果作者的文字表达能力有限越说却越说不清,还跑离了却又想绕回来,最后弄得这个点只有作者本人和少数明白人才明白,也不加个注释说明。比如书中的“词法作用域”和“变量作用域”那一部分,作者后来又用“圈地”和“割据”来形容,这样不免让读者又要去思考后来形容的这两种 stuff 是 what ,how, why 了。
  
  但是作者的编程基础的功底和开发经验是不容质疑的。他其实是想借现在JavaScript的盛名写本这样的“语言本质”论。所以,这本书虽然不可能成为经典书--原因前面已讲述,但是是一本不可多得的好书。下面说说这本书与市面上相比它独有的,也就是说好好在哪儿:
  
  触类旁通
  把JavaScript从资深程序员的思维模式去挖掘这门语言的奇妙与复杂。
  基本原理
  除了书名中有JavaScript,和为数不多JavaScript应用层面的内容外,更多的而是谈编程语言实现机制和底层原理,甚至是计算机语言发展观和未来的趋势把握。
  非主流编程
  详细的函数式编程语言的知识,对阅读《计算机程序的构造和解释》这本书有帮助。
  开放分享
  网上有第1章的内容,和第3章到第5章电子书的内容,及第7章的前4节,所以只有第2章、第6章及第7章的后几节没有得看。这是国内出版界中技术书中极少见的开放和分享态度。
  支持国人多出原创好书!走精品路线!


这是一本非常值得看的一本书。至少不是那些拼凑的文章。读这本书让我想起以前学DELPHI时,除了国外翻译过来的书之外,就是刘艺的几本关于DEPHI的源码分析的书了,让我真正理解了一些东西。JS这个语言也看了几天外译过来的书,基本概念都能理解。也看了那本非常好的《JAVASCRIPT权威指南》。但是。这样的一本深入分析的书真是对我的一种帮助。从中,可以了解到思维的过程,和如何去把握一门语言的。虽然在工作中也一直在用着JS,但是还是要深入的学习,真正撑握它。个人建议:这本书可以和《JAVASCRIPT权威指南》一起看。


国内javascript经典图书,对动态语言介绍比较深刻,值得阅读与收藏.


书很不错。从语言的本质上讲的,真的授人以渔了,是一本好书。


不适合入门学习 适合搞语言研究


写的很深入,可以看出作者写着本书下了很大功夫,不过不适合初学者。需要对js有意定的深入了解的人。内容讲解的非常详细,也很全面,原理将的很透彻,是不本不错的深入学习js的好书。


书我还没有看完,可能是我现在的js水平还是不够高,对于书中讲解的很多知识点都不是很了解,但是不得不说,作者写书写的很认真,书中的很多东西都是作者亲身实践的,不像很多书都是你抄我,我抄你,总之如果你的js达到了一定水平,这本书值得看看


对js的讨论非常深入,并不偏向于应用.比较适合于做了几年web开发,对js有一定研究,想高通里面一些问题的程序员看.


书的内容讲的很详细。。很不错,,质量也挺好得


这书是看了那个不完整的电子版后决定买的,内容还是比较深的,不过作者有点过于学院派,比如非要区分{}的几种用法,作为研究是应该的,对使用者就有点过了。虽然我觉得作者过于扣字眼,但我喜欢这种风格:)


没有深刻的理解和大量的的一线经验是写不出这样的书的,好书的顺序都是先阐明问题,然后是解决问题,然后是为什么这么解决问题,然后是回过头来的根本和技术。这样读者才知道我在学什么,我学了这些技术能解决什么样的问题,读起来才会专注。所以,回过头来看抄来的书是很难按照这个顺序去写的,因为写书的人就没有碰到问题。


是我所看过的说js的书中最深入的一本PS:我还真看过不少js书..


这本书是好是坏已经不需要争论了吧?


这本书写得蛮好的


这本书太好了,


还可以```只是与我想要的不符``这本理论太多了``


先讲缺点“太深奥了”,要多看多理解多学习啦剩下的都是优点鉴定完毕


国人著作中的精品,难得一遇的好书。


书的质量没得说,正在阅读,内容也很不错


值得一买,细细阅读。


书很好,才到手,晚上准备用功了~


这样的内容实在不可多得,直击js核心!


刚看到序言就知道这书相当符合我的阅读路线,书的内容相当的不错


业界的评论:在js领域国人所出的书当中无人能超越此书。


昨天收到了,蛮好的,很喜欢,货到得也很快,三天就到货了


是一本进阶的书,要有一定的基础才好读...书看了还没到一半,看过的部分讲解了较多比较生僻的语言特性


书讲语法的部分并不多,更多的是在讲更深层的东西,适合有JavaScript基础的人看,有很多作者自己的想法在里面,作者10年的程序生涯毕竟不是盖的啊。


周先生,是一个文人型的技术作家。我本人是比较欣赏,究于本书,我觉的应该是他对DELPHI的源码分析的心得,而得出对OO设计的一个思维范本,基于这种范本,而写的这种书,包括他的源码QOMO。

我在看这本书之前,先后看过,几本原版资料,所以对周先生之本书理解较为容易,先说优点:
(1)心得与实践相得益彰
(2)引经据典穿插得当
(3)对引擎技术的理解较为深入

缺点:
(1)对某些理论的说明,我想还是个家之言,不具有代表性,有些地方,通读晦涩,有时我反复咀嚼,我想仍需要改进
(2)条目分类,我觉的仍存在冗余,不够精练,部分段落,说话较为咯索,行文有待优化。


是一本刨根问底的javascript书籍,而不是以介绍javascript语法及基础知识为主,所以应有选择性购买


我是一直徘徊在编程花园外的门外汉,看了前3章,感觉aimingoo关于javascript的历史讲得很精彩而且立意新颖。结合自己的开发历史来谈,娓娓道来,夹叙夹议。妙哉。


作者对于细节写的比较详细。
当初送货的速度挺快的,只可惜看书的速度实在不敢恭维。
由于自己是JS新手,所以理论联系起实践有待加强。


这本书不是故事书,如果一味追求速度,那么最好别看...思考并阅读着,才会有价值,对于你,对于这本预言精髓.


内容自不必说,国内少有的大师之作。只是据说此书马上要发布第二版了,有较大改动,想买的可以考虑留着买第二版。我也是买过了才发现这个消息的啊


算是不错的一本书,至少对我有用。


买来学习用,充实下


书不错,第二版已经上架了!


虽然学术点,但是不失为一本佳作哈。


很好,很强大,质量好,送货速度快,灰常满意!


质量很好,送货时间也很合适


书写得不错,货送的即时,谢谢


好书,但不适合入门。仍要珍藏!


书还没有完全读完,感觉书写的瞒好的,很有深度,但要完全看懂需要有一定js基础


不适合初学者,看了半天好多不懂,也不解释,建议初学者别看


看啦,还可以。学了不少东西


书看了一半搁置了,实在看不下去了,本来看了目录感觉应该可以学到好多东西(因为目录中的章节都应该是js编程高级应用),但和想的不一样。实用性不强,可能我是那种适合看手册的那类人吧,对于这种,长篇大论的书,实在不知道所然。更抓不住书中的重点。看了一半,回想都学到了什么,或对js那里又有了一个新的认识,好像没有什么。(可能需要慢慢的品评!)不过,不建议大家购买,尤其初学。(闭包等一些高级应用本人是在网上找资料看的,实在看不懂周大师说的。惭愧!)纸张不好。是那种超级不好。


看不懂,作者创造了好多词汇.感觉像是用金山快译翻译过来的英文一样,虽说是原装的中文书.


非常难读的一本书,繁琐难懂的概念,大失所望。很多例子都是不完整的举出,以想当然的想法告诉读者.........可能水平太低。不过觉得好书是应该让人明白什么,而不是更加难明白是什么。


不咋的,没什么好看的


这是一本JS洗脑书,会让你觉得很崩溃,洗脑后再看其他书,会觉得很轻松。


这部书像是征程,起初的疑虑在作者的长途奔袭中烟消云散,非常适合FP爱好者和各类语言爱好者


这本书不是JavaScript的入门书籍 甚至可以说不是JavaScript的书籍周老师是通过JavaScript这种多种元素的语言来时说明语言的部分本质(表达式语言,动态语言,面向对象语言)


爱民老师的大作,JS程序员必看。


才看,将的都是底层的东西,没有综合的项目案例


才到手开始看,之前是同事推荐的,在网上下载电子版,看了两章,感觉讲得比较深入,最后决定买了。书本身排版质量都不错。


对应用没啥帮助,都是语言底层的东西,了解了下JavaScript的运行方式。


看了下,很不错,准备细细研读


买了到现在还没看,朋友推荐这本书写的不错


如果可以把款退回给我!


给老公买的,老公说还不错,基本上能用的上


看了一半,看不太明白,回去先看javascript权威指南,打好基础再看看吧


不是一部适合大众的书,应用场景也不广;除非想自己开发一个Javascript库,或者挑战一下自己对Javascript的理解,否则没必要自找痛苦看;不过确实可以从书中找到很多实用的技巧,写出一些精悍高效的的代码;另外,真的几乎是纯原创,很多内容在网上搜不到类似的..


相关图书