第一图书网

JavaScript语言精髓与编程实践

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

2012-3  

出版社:

电子工业出版社  

作者:

周爱民  

页数:

456  

Tag标签:

无  

内容概要

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

作者简介

周爱民,(Aimingoo),国内软件开发界资深软件工程师、架构师,技术作家。有十余年的软件开发、项目管理、团队建设的经验。著有《Delphi源代码分析》、《大道至简》和《JavaScript语言精髓与编程实践》等专著。◆2001年,主持完成的“极光数据处理仓库中心系统”被河南省信息产业厅授予省高新技术产品二等奖。◆2003年,被美国Borland公司授予“Borland Delphi产品专家”称号。◆2004年,出版《Delphi源代码分析》,被誉为“Delphi领域精品著作”。◆2005年,发布《大道至简》电子版(第一版)。◆2006年,发起开源项目QomolangmaOpenProiect,探讨语言系统基础技术。◆2007年3月,出版《大道至简》(第二版)。◆2008年3月,出版《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 富浏览器端开发与AJAX
  1.4 语言的进化
  1.4.1 Qomo的重生
  1.4.2 QoBean是对语言的重新组织
  1.4.3 JavaScript作为一门语言的进化
  1.5 为JavaScript正名
  1.5.1 JavaScript
  1.5.2 Core JavaScript
  1.5.3 SpiderMonkey JavaScript
  1.5.4 ECMAScript
  1.5.5 JScript
  1.5.6 总述
  1.6 JavaScript的应用环境
  1.6.1 宿主环境
  1.6.2 外壳程序
  1.6.3 运行期环境
 第2章 JavaScript的语法
  2.1 语法综述
  2.1.1 标识符所绑定的语义
  2.1.2 识别语法错误与运行错误
  2.2 JavaScript的语法:变量声明
  2.2.1 变量的数据类型
  2.2.1.1 基本数据类型
  2.2.1.2 值类型与引用类型
  2.2.2 变量声明
  2.2.3 变量与直接量
  2.2.3.1 字符串直接量、转义符
  2.2.3.2 数值直接量
  2.2.4 函数声明
  2.3 JavaScript的语法:表达式运算
  2.3.1 一般表达式运算
  2.3.2 逻辑运算
  2.3.3 字符串运算
  2.3.4 比较运算
  2.3.4.1 等值检测
  2.3.4.2 序列检测
  2.3.5 赋值运算
  2.3.6 函数调用
  2.3.7 特殊作用的运算符
  2.3.8 运算优先级
  2.4 JavaScript的语法:语句
  2.4.1 表达式语句
  2.4.1.1 一般表达式语句
  2.4.1.2 赋值语句与隐式的变量声明
  2.4.1.3 (显式的)变量声明语句
  2.4.1.4 函数调用语句
  2.4.2 分支语句
  2.4.2.1 条件分支语句(if语句)
  2.4.2.2 多重分支语句(switch
  语句)
  2.4.3 循环语句
  2.4.4 流程控制:一般子句
  2.4.4.1 标签声明
  2.4.4.2 break子句
  2.4.4.3 continue子句
  2.4.4.4 return子句
  2.4.5 流程控制:异常
  2.5 面向对象编程的语法概要
  2.5.1 对象直接量声明与实例创建
  2.5.1.1 使用构造器创建对象实例
  2.5.1.2 对象直接量声明
  2.5.1.3 数组直接量声明
  2.5.1.4 正则表达式直接量声明
  2.5.1.5 【ES5】在对象直接量中使用属性读写器
  2.5.1.6 讨论:初始器与直接量的区别
  2.5.2 对象成员
  2.5.2.1 对象成员列举、存取和删除
  2.5.2.2 属性存取与方法调用
  2.5.2.3 对象及其成员的检查
  2.5.2.4 可列举性
  2.5.3 默认对象的指定
  2.6 【ES5】严格模式下的语法限制
  2.6.1 语法限制
  2.6.2 严格模式的范围
  2.7 运算符的二义性
  2.7.1 加号“+”的二义性
  2.7.2 括号“( )”的二义性
  2.7.3 冒号“:”与标签的二义性
  2.7.4 大括号“{ }”的二义性
  2.7.5 逗号“,”的二义性
  2.7.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.2.1 主要的语法作用域及其效果
  3.2.2.2 语法作用域之间的相关性
  3.2.3 执行流程及其变更
  3.2.3.1 级别2:“break <label>”等语法
  3.2.3.2 级别3:return子句
  3.2.3.3 级别4:throw语句
  3.2.3.4 执行流程变更的内涵
  3.2.4 模块化的效果:变量作用域
  3.2.4.1 级别1:表达式
  3.2.4.2 级别2:语句
  3.2.4.3 级别3:函数(局部)
  3.2.4.4 级别4:全局
  3.2.4.5 变量作用域中的次序问题
  3.2.4.6 变量作用域与变量的生存周期
  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.7.1 两个原型链
  3.3.7.2 constructor属性的维护
  3.3.7.3 内部原型链的作用
  3.3.7.4 【ES5】在SpiderMonkey与ES5中的原型链维护
  3.3.8 原型继承的实质
  3.3.8.1 原型修改
  3.3.8.2 原型继承
  3.3.8.3 原型继承的实质:从无到有
  3.3.8.4 如何理解“继承来的成员”
  3.4 JavaScript的对象系统
  3.4.1 封装
  3.4.2 多态
  3.4.3 事件
  3.4.4 类抄写?或原型继承?
  3.4.4.1 类抄写
  3.4.4.2 原型继承存在的问题
  3.4.4.3 如何选择继承的方式
  3.4.5 JavaScript中的对象(构造器)
  3.4.6 不能通过继承得到的效果
  3.5 【ES5】可定制的对象属性
  3.5.1 属性描述符
  3.5.1.1 (一般的)数据属性描述符
  3.5.1.2 (带读写器的)存取属性描述符
  3.5.1.3 直接量形式的初始器是语法格式,而非描述符
  3.5.2 定制对象属性
  3.5.2.1 属性声明以及获取属性描述符
  3.5.2.2 新的对象创建方法:Object.create()
  3.5.3 属性状态维护
  3.5.3.1 取属性列表
  3.5.3.2 使用defineProperty来维护属性的性质
  3.5.3.3 对于继承自原型的属性,修改其值的效果
  3.5.3.4 重写原型继承来的属性的描述符
 第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.1.1 连续赋值
  4.3.1.2 三元表达式的连用
  4.3.1.3 一些运算连用
  4.3.1.4 函数与方法的调用
  4.3.2 运算式语言
  4.3.2.1 运算的实质是值运算
  4.3.2.2 有趣的运算:在IE和J2EE中
  4.3.3 如何消灭掉语句
  4.3.3.1 通过表达式消灭分支语句
  4.3.3.2 通过函数递归消灭循环语句
  4.3.3.3 其他可以被消灭的语句
  4.4 函数:对运算式语言的补充和组织
  4.4.1 函数是必要的补充
  4.4.2 函数是代码的组织形式
  4.4.3 重新认识“函数”
  4.4.3.1 “函数”==“lambda”
  4.4.3.2 当运算符等义于某个函数时
  4.4.4 JavaScript语言中的函数式编程
  4.5 JavaScript中的函数
  4.5.1 可变参数与值参数传递
  4.5.2 非惰性求值
  4.5.3 函数是第一型
  4.5.4 函数是一个值
  4.5.5 可遍历的调用栈
  4.5.5.1 callee:我是谁
  4.5.5.2 caller:谁呼(叫)我
  4.6 闭包
  4.6.1 闭包与函数实例
  4.6.1.1 什么是闭包
  4.6.1.2 什么是函数实例与函数引用
  4.6.1.3 (在被调用时,)每个函数实例至少拥有一个闭包
  4.6.2 闭包与调用对象
  4.6.2.1 “调用对象”的局部变量维护规则
  4.6.2.2 “全局对象”的变量维护规则
  4.6.2.3 函数闭包与“调用对象”的生存周期
  4.6.3 闭包相关的一些特性
  4.6.3.1 引用与泄漏
  4.6.3.2 函数实例拥有多个闭包的情况
  4.6.3.3 语句或语句块中的闭包问题
  4.6.3.4 闭包中的标识符(变量)特例
  4.6.3.5 函数对象的闭包及其效果
  4.6.4 闭包与可见性
  4.6.4.1 函数闭包带来的可见性效果
  4.6.4.2 对象闭包带来的可见性效果
  4.6.4.3 匿名函数的闭包与可见性效果
  4.7 【ES5】严格模式与闭包
  4.7.1 严格模式下的执行限制
  4.7.2 严格模式下的匿名函数递归问题
 第5章 JavaScript的动态语言特性
  5.1 概述
  5.1.1 动态数据类型的起源
  5.1.2 动态执行系统的起源
  5.1.2.1 编译系统、解释系统与编码
  5.1.2.2 动态执行
  5.1.3 脚本系统的起源
  5.1.4 脚本只是一种表面的表现形式
  5.2 动态执行
  5.2.1 动态执行与闭包
  5.2.1.1 eval使用全局闭包
  5.2.1.2 eval使用当前函数的闭包
  5.2.2 动态执行过程中的语句、表达式与值
  5.2.3 奇特的、甚至是负面的影响
  5.3 动态方法调用(call、apply与bind)
  5.3.1 动态方法调用中指定this对象
  5.3.2 丢失的this引用
  5.3.3 栈的可见与修改
  5.3.4 兼容性:低版本中的call()与apply()
  5.3.5 【ES5】兼容性:ES5中的call()、apply()
  5.3.6 【ES5】bind()方法与函数的延迟调用
  5.4 重写
  5.4.1 原型重写
  5.4.2 构造器重写
  5.4.2.1 语法声明与语句含义不一致的问题
  5.4.2.2 对象检测的麻烦
  5.4.2.3 构造器的原型(prototype属性)不受重写影响
  5.4.2.4 “内部对象系统”不受影响
  5.4.2.5 让用户对象系统影响内部对象系统
  5.4.2.6 构造器重写对直接量声明的影响
  5.4.2.7 构造绑定
  5.4.2.8 内置构造器重写的概述
  5.4.3 对象成员的重写
  5.4.3.1 成员重写的检测
  5.4.3.2 成员重写的删除
  5.4.4 宿主对重写的限制
  5.4.5 引擎对重写的限制
  5.4.5.1 this的重写
  5.4.5.2 语句语法中的重写
  5.4.5.3 结构化异常处理中的重写
  5.5 包装类:面向对象的妥协
  5.5.1 显式包装元数据
  5.5.2 隐式包装的过程与检测方法
  5.5.3 包装值类型数据的必要性与问题
  5.5.4 其他直接量与相应的构造器
  5.5.4.1 函数特例
  5.5.4.2 正则表达式特例
  5.6 关联数组:对象与数组的动态特性
  5.6.1 关联数组是对象系统的基础
  5.6.2 用关联数组实现的索引数组
  5.6.3 干净的对象
  5.7 类型转换
  5.7.1 宿主环境下的特殊类型系统
  5.7.2 值运算:类型转换的基础
  5.7.3 隐式转换
  5.7.3.1 运算导致的类型转换
  5.7.3.2 语句(语义)导致的类型转换
  5.7.4 值类型之间的转换
  5.7.4.1 undefined的转换
  5.7.4.2 number的转换
  5.7.4.3 boolean的转换
  5.7.4.4 string的转换
  5.7.4.5 值类型数据的显式转换
  5.7.5 从引用到值:深入探究valueOf()方法
  5.7.6 到字符串类型的显式转换
  5.7.6.1 重写toString()方法
  5.7.6.2 从数值到字符串的显式转换
  5.7.6.3 其他类型的显式转换
  5.7.6.4 序列化
第3部分 编程实践
 第6章 元语言:QoBean核心技术与实现
  6.1 QoBean语言层的基本特性
  6.1.1 QoBean语言层概要
  6.1.1.1 如何使用QoBean
  6.1.1.2 QoBean中的面向对象(OOP)
  6.1.1.3 QoBean中的接口(Interface)
  6.1.1.4 QoBean中的切面(Aspect)
  6.1.2 Qomo的体系结构及其与QoBean的关系
  6.2 QoBean的元语言特性
  6.2.1 QoBean如何理解元语言
  6.2.2 算法与数据结构
  6.2.2.1 引用类型与值类型的数据
  6.2.2.2 函数调用
  6.2.2.3 源起
  6.2.2.4 小结
  6.2.3 代码组织形式
  6.2.3.1 块,以及基于块的编织
  6.2.3.2 更强的编织
  6.2.3.3 逻辑代码块:局部、全局,以及闭包
  6.2.3.4 逻辑的属主
  6.2.4 对“如何组织对象”的补充
  6.2.4.1 原子,与原子联结的友类、友函数
  6.2.4.2 对象唯一化
  6.2.5 综述
  6.3 基于元语言实现的语言特性
  6.3.1 基于元语言的类继承框架
  6.3.1.1 类注册过程
  6.3.1.2 示例:实现MetaClass与MetaObject的约定
  6.3.1.3 完整的Qomo语法实现
  6.3.1.4 类类型树的建立
  6.3.2 多投事件
  6.3.3 其他语言特性的实现
  6.4 基于元语言实现的DSL
  6.4.1 DSL的基本设计
  6.4.2 DSL的基本实现
  6.4.3 DSL的基本应用
  6.4.4 一些修补
  6.4.5 基于严格模式的一些修补
 第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 参考书目
  附录E 本书各版次主要修改

章节摘录

版权页:插图:我最开始做的网页只用于展示信息,是一个个单纯的、静态的网页,并通过一些超链接连接起来。当时网页开发的环境并不好(像现在的Dreamweaver这类程序,那时只能是梦想),因此我只能用、记事本(notepad.exe)来写HTML。当时显示这些htm文件的浏览器就是Netscape Navigator3。我很快就遇到了麻烦,因为P&J的朋友说希望让浏览网页的用户们能做更多的事,例如搜索等操作。我笑着说:“如果在电子公告板上,写段脚本就可以了;但在互联网上面,却要做很多的工作。”事实上我并不知道要做多少的工作。我随后查阅的资料表明:不但要在网页中放一些表单让浏览者提交信息,还要在网站的服务器上写些代码来响应这些提交信息。我向那位先生摊开双手,说:“如果你真的想要这样做,那么我们可能需要三个月,或者更久。因为我还必须学习一些新鲜的玩意儿才行。”那时的触网者,对这些“新鲜的玩意儿”的了解还几乎是零。因此,这个想法很自然地被搁置了。而我后来(1997年)被调到成都,终于有更多的机会接触Intenet,而且浏览器环境已经换成了Intenet Explorer 4.0。那是一个美好的时代。通过互联网络,大量的新东西很快被传递进来。我终于有机会了解一些新的技术名词,例如css和JavaScript。当时(1997年12月)HTML4.0的标准已经确定,浏览器的兼容性开始变得更好,Internet Explorer(以下简称IE)也越来越有取代Netscape Navigator(以下简称NN)而一统天下的趋势。除了这些,我还对在Delphi中进行ISAPI-CGI和ISAPI Filter开发的技术也展开了深入的学习。1.1.2 第一段在网页中的代码1998年,我被调回到河南郑州,成为一名专职程序员,任职于当时一家开发反病毒软件的公司,主要工作是用Delphi做Windows环境下的开发。而当时我的个人兴趣之一,就是“做一个个人网站”。那时大家都对“做主页”很感兴趣,我的老朋友傅贵就专门写了一套代码,以方便普通互联网用户将自己的主页放到“个人空间”里。同时,他还为这些个人用户提供了公共的BBS程序和一些其他的服务器端代码。但我并不满足于这些,我满脑子想的是做一个“自己的网站”。


编辑推荐

《JavaScript语言精髓与编程实践(第2版)》编辑推荐:以JavaScript视角看整个计算机语言的世界,小角度引来的大话题,难得的实践派写书风格,对语法认识细致入微,这是一本硬书,在技术原创书中,属于稀有“异数”之作。

图书封面

图书标签Tags

广告

下载页面


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



如果只是想做关于javascript的浏览器编程和dom之类的话,读犀牛书和javascript高级程序设计。这本书不扯浏览器编程先关方面的东西,着重写的一些javascript语言本身的特性,javascript实现一些设计模式、算法的研究和探索,对于语言本身的研究,确实是国内出的最好的一本javascript书。


买来看看学习 学习!昨天晚上大概过了一遍书中的内容,里面的类容大多写的是javascript本身的语言特性,没有和浏览器相关的知识,总体来说书不错,不适合新手,但是有一点我觉得里面夹杂着其他语言的类容,我不知道这样对比好不好,但是对我来说看不懂其他语言,也就是那几个小节对我们来说没用


好书不是一两句评价就能说清的~
看不起javascript,只粉静态语言?
只喜欢OO不喜欢函数式?
入手吧亲,除非你不碰web相关的开发~


作者就是做javascript应用出身,难怪有经验。这本书对提升语言的理解很有帮助。
要说不足,语言有些啰嗦,作者总喜欢说一些“似是而非”的哲学句子。


大部分Javascript技术书都是根据国外的书翻译过来的,国内作者写得很少


周爱民老师的神著,非常喜欢。从JavaScript起源开始讲起,非常难得的一本书。非常喜欢。


这本书从另一个角度描述javascript,嗯嗯,写得不错,目前还在看。


书很不错,慢慢讲,讲得非常细。只是有些地方放在现在有些过时,后面的编程实践QoBean的就没怎么看了。


不适合新手~喜欢脚本语言的话可以收一本做提升


一开始被这本书的前沿说得有点云里雾里的,我想作者要表达的是自己十年编程的一个沉淀,一时半会理解不了~先把能看懂的给看完,看不懂的后面再细细体会吧~


早就听说前端祖师爷大名,网上做JS开发的人极力推荐下订购了这本书,国内原著的JS书极少,本书是其中精品中的精品,记载着作者开发过程中的经验与心血,希望深入学习过本书以后在JS上能有较大的突破。


内容很有功力,建议对编程有一定的认识之后再看


延续第一版的讲解风格,深入浅出非常值得JSer阅读。


书记录的很详细


适合想提高自己JS技术,又有一定JS基础的人~


今天意外收到书,早上查了物流信息书还在路上。以为真的要5-6天呢。书是一本好书。值得深入的研读。


很好的书,写得很细


送书太慢,不止一次了:①周五订,希望周末能收到,第一次快递员发短信道歉,说病了,不能周末送到;第二次购书,还是周五,下周二时快递员才打电话说你收下货吧,周末应该到的货,都到下周二。我改变不了当当,只好改变自己。


里面废话太多,跟作者一贯风格一致。不过这本书内容比较丰富,值得思考。


书很新 正版很好。


书刚收到 发个贴 先 呵呵


可以作为js的入门书籍。淘宝愚公的书


买这书并不是为了看~

ps:当当网站验证码太坑爹了...


书好不好不用我说了。不过当当坑爹啊,下了订单第二天就由8.5折降到7.5折


能再版,非精品也良品。


真本书非常不错


学习一下,听说这本书还行


写的很深,看一遍真的没看透,有时间再看两边


非常不错哦~写得比较深入,值得一度


好书!可惜少了给人具体摹仿制作网站的例子。初学者好需要。


讲解精辟,太好了。


没有看,但是,整体上不错的效果。


正则


讲的比较深,比较细


好书,建议一看


慢慢看....很有深度


还是不错的,很喜欢。只是送货时间有点慢


随便网上一搜就有评论了,你自己看着办吧!赶快买一本收藏吧...


这本书深入浅出的讲解了JAVAscript的原理!!


内容由浅入深,很不错,在原来有 JavaScript 一定基础上阅读更加好


不错的javascript书籍


货送的太急了,本来准备周末领的,结果星期三就来了。慢慢研究周老师的精髓


该书介绍的内容就如他在开始描述的一样,只讲述其中某些细节。里面用的词汇不易明白,读起来晦涩,费力!也许只有高手才能读懂吧!


一直听说很久了,而且现在 也已经出到了第二版。之前一直没买。这算是国内最好的一本js书籍了吧。


这书还不错,深入学习中。


发货速度快,书的质量挺好。


书不错了, 有点深~


看了很多人推荐,很好的一本书,今天刚到,准备开读了!


没基础的不要看哈


就是需要这样深入的js指导


内容覆盖比较广。值得一读


对于初学者还是比较有深度。


纸张都挺好的,还没看哈。


封面有点皱,有点可惜,总体还是不错的,快递挺快


对js有一定了解,有实际项目经验的可以看看,算是进阶提示的辅助读物吧


书本内容蛮好,印刷也很好,哈哈哈


怕就怕在不明了


dfsdfsdf


一般般。宣传过度


所讲的不见得对,但作者能够自圆其说。


后面一页是脏的 无语 公司买的 不知道内容怎么样


我买了此书和另外一本javascript高级程序设计,一本放家里晚上看,一本放公司白天看,相比之下此书要逊色不少;可以感觉到作者本身是技术纯熟的人,但里面不少知识讲得过于零碎,表达过于繁琐,难以融会贯通,希望作者再接再厉,下一版能深入浅出


书的目录部分少了好多页,本来是当资料书来查阅的,这样一来,给我的阅读带来了极大的不便。


帮男友买的~他很满意的说~


我买到的这本质量比书店里卖的差远了.黄黄的


还精粹呢,好的书应该深入浅出,让别人都能看懂,大家看他自己作的序章,还当自己文笔很好呢,稀烂,作者本身语文水平就不行,写的云里雾里的,还探讨什么思想,先把语文学好了再来吧,一本书完全没什么层次,象随笔一样,真坑爹,果断退了。


畅销技术书,买来还没来得及看,对内容不做评论,只能说说纸张啥的,正版书纸张很好。


JavaScript语言精髓与编程实践


书还算挺好的


很好 ,对我很有帮助


书不错,我看了2遍才看懂


js评价


  《JAVASCRIPT语言精髓与编程实践》讲述了JavaScript的语言实现与扩展,主要包括以下三个方面的内容:(1)动态、函数式语言,以及其它语言特性在JavaScript的表现与应用;(2)如何用动态函数式语言的特性来扩展JavaScript的语言特性与框架;(3)如何将JavaScript引擎整合到其它高级语言的开发过程中。
  
  


  第一次看是在学校里的图书馆,当时感觉这本破书一点都不实用,既没提怎么做特效,也没提dom如何如何。。,工作后写了一年js, 现在重新买来读,终于明白书中内容的牛逼之处~


  正如书中所说,很多人对javascript抱有很强的成见,认为这只是个小孩玩的玩具,我承认,我以前也这么认为,但自从我接触到Ext之后,。。。我有一种震撼的感觉!!那样的代码!!我突然发现javascript,,,它一开始就不是玩具。。。本书算是我看的国产的讲javascript中最好的一本。。。我暂时只看过前几章,。。但讲闭包那部分真的很精辟!!!!!。。。。我看过的中文、英文资料里面,讲闭包最好的就是本书了。。。


  只因为我看着好吃力。
  不过能看出aimingogo是用心去写了。这么厚一本那!
  字数太短不让发表字数长才可以发表


  这是国人写的书,在国内技术原创书中属于稀有的“异数”,作者从语言本质的角度去写,写得极为深入,本人阅读后受益非浅。书中提到了《程序设计语言原理》、《程序设计语言实践之路》、《设计模式》、《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章的后几节没有得看。这是国内出版界中技术书中极少见的开放和分享态度。
  支持国人多出原创好书!走精品路线!


  首先声明,我看的只是InfoQ发布的本书的节选部分《动态函数式语言精髓》,虽然只是节选,但却相当的精彩,我的评论如下:
  
  个人感觉,这是一本硬书。
  
  这本书不是简单的介绍某种语言的教科书,也不是介绍某些技巧的XX宝典,这本书是一本探讨理论的书,是一本探讨编程语言范式的书,这样一本书看下来的代价就是你的头发至少要掉个几十根,而你头脑中对于编程语言的思考和概念也将随之清晰。
  
  本书主要通过JavaScript语言作为介绍的媒介,从而探讨语言的实现以及语言本身的种种特性。
  
  JavaScript作为一种语言,很优美,它既有动态语言的特性,也有命令式语言的本质,既有函数式编程的风骨,也有面向对象的内涵,用JavaScript这种语言来作为描述语言范式的一种工具,虽然有它的局限性,但是也有它的独到之处,而用JavaScript作为表述语言上也能体现这本书的一些观点。
  
  虽然作者认为语言只不过是一种工具,一种思想的表示,不是思想本身。但是,在不同的语言身上,我们能够看到语言所代表的思想,以及那些思想下实现的本质。
  
  当然由于本书是谈理论的书,所以难免有些枯燥,作者明显是个理工类出身,文笔也并不优美,但是某些语句还是相当的精彩的,节选部分如下:
  
  1、一种语言只是一种思想的表示,不是思想本身。
  2、语言只是一种工具,工具的选择只在于“功用”能否达到,而不在于工具是什么。
  3、命令式语言 -> 冯诺依曼体系,以“存储”和“处理”为核心。
  4、在语言中存储被抽象为内存,处理被抽象成运算(指令或者语句)。
  5、命令式语言的核心:通过运算去改变内存中的数据 。
  6、数据的表现形式是编程的根本。
  7、命令式语言发展上的所有努力,最终都必然面临的问题是“如何抽象数据存储”。
  8、接口提出的观点就是:只暴露数据体的逻辑行为能力,而不暴露这种能力的实现方法和基于的数据特征。
  9、对象的引用是面向对象体系的灾难之源。
  10、接口设计的目标系统与计算机系统的功能特性的投影。
  11、原型的含义是指:如果构造器有一个原型对象A,则由该构造器创建的实例都必须复制自A。
  12、基于原型的“构建过程”可以被简单的映射为“复制”。
  13、基于原型继承的对象系统的设计理念:将对象(类)的继承关系,与对象(类)的行为描述分离。所有原型继承的实质其实是从无到有的一个过程。
  
  补充完善中。。。


  其实我只是看了infoq上免费提供的《动态函数式语言精粹》,那个也就是这本书的一个子集,按照infoq上的说法基本上是三、四、五几章。我给推荐也是给《动态函数式语言精粹》。这本我就在china-pub上看了下目录,感觉很多章节都是为了和这个书名相匹配才硬加上去的。作者自己也说他开始不是要写JavaScript,不知道是不是因为变成讲JavaScript的书销量会好一些,所以才变成了写JavaScript的书。当然,这些其实也都是作者的自由,和读者也没什么关系。
  
  为什么推荐《动态函数式语言精粹》呢?当然不是因为那本是免费的,而是作者在那本书里表现出来的对语言的态度,以及如何去认识语言本质。
  
  我们经常会看到大家一起为了争论哪种语言好,哪种框架好。这样事情经常重复发生。到底是Java好还是C#好,到底是Ruby好还是Python好,到底是Groovy更有前途还是Scala?我并不是在否定语言没有优劣之分,只是想问当我们在推崇A否定B的时候是真的明白了A到底是什么B到底是什么。
  
  世界总是在变化的,只有掌握了语言本质的人才能一直屹立在巅峰之上!


  比较全面地讲述了JavaScript的前世今生。
  
  但是行文比较罗嗦,一个简单的事情要用上四五层比喻,还说不透。对于追求阅读快感的人,或者是技术相对有些积累的读者,这书有点隔靴搔痒的感觉。
  
  比较推荐的书是ppk和pro javascript。
  网上有篇文章:Javascript Closures,用相对较短的篇幅把事情讲的很清楚,就论述密度而言远远地超过了本书的内容。(当然理解起来的难度也要深不少。)
  http://www.jibbering.com/faq/faq_notes/closures.html
  这篇文章也有中文版,可以在google.cn上搜一下。


  很少有书能把javascript当作一门真正的语言来讲。
  
  这书并不适合用来入门,因为并没有专题去讲javascript的语法和使用。甚至这本书不适合只用javascript的人读,因为书里大量引用来自其他语言的特性来说明javascript的优点和不足。
  
  这本书适合一个已经掌握至少一门语言,并且希望用javascript做大型工程的人来读。一是对书中所述的东西会有深刻体会,二是能避免一些使用上的问题。
  
  推荐章节:函数特性和动态特性
  
  本书最后一章编程实践我没有读,因为目前我还没机会在大型工程里使用javascript(大型工程的脚本我会考虑python),因此最后一章实践的模拟oo等内容对我来说用处不大。
  
  另外,书中语言有些晦涩,读起来不是很流畅。


看的第一本Js书啊,太牛了


这本可以算是市面上js书籍中讲的最深入的一本,你居然第一本就读这个,其实的确不太合适


同意,这绝对是是一本真正有内容的书,其中大部分在其他书籍中几乎完全找不到


多谢,我去看看


深有同感。就论述JavaScript语言本身而言,该书确实很原创。但单从技术层面来讲,要点的条理性不太好,略显拖沓。许多技术要点读起来不如《精通JavaScript》、《JavaScript设计模式》干脆、利落。相比之下,后两本书的实例代码更为实用。


嗯,最近正在看,其中仔细阅读了闭包一节, 确实讲的不清晰,远不如网上那篇文章讲的透彻易懂,但是这一节中对作用域阐述的那几个图还是很清晰的,对我之前作用域,执行环境,活动对象的分析很有帮助,所以我是结合了此书中作用域和网上那篇文章来搞懂闭包的,下面是中文链接
http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2007/08/JavaScriptClosures.html


请问楼主,jibbering这篇文章的中文版叫什么名字,没搜到唉


能给出链接更好


要想了解闭包等函数式概念,可以学习下schemer,schemer比较简单,推荐SCIP,我断断续续看了好几年,看了好几遍


书中语言有些晦涩,读起来不是很流畅,我也这样感觉,读着很累~


这本书有有些例子是变着法的给自己找不痛快... 不过,我喜欢!


呵呵,语言上的确不怎么舒服~


如果希望读懂此书的全部内容,还需要掌握大量编程语言的知识。


读了样章,给我的感觉是我必须要买下这本书。绝对的经典制作。


你推荐的那个章节,不如去看看国外人写的,在我上一篇评论里有名字。。。


关注一下,最近在搞这方面


我一直喜欢阅读影印版的书籍,也一直对国内的作者比较失望。
这本书让我感觉事情还是变化的,过内的技术作者还是不错的。


原来以为国内的作者写的应该读起来很流畅,不过不知道是不是作者有点故意卖弄文笔的原因,读起来感觉有点晦涩。
不过本书的内容还是很经典的,也绝对够深入。
而且,本书完全可以脱离开javascript的范畴,关于命令式语言和函数式语言的讲解非常的精辟。


倒数第二段中javascript和python,没有可性吧


相关图书