• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

经典的《JavaScript 权威指南中的“对象”不经典

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 18次 | 进入软件测试论坛讨论

领测软件测试网

这些天在为Qomo项目写“JavaScript面向对象的支持”这组文章。也一直在期待网上购得的那本《JavaScript 权威指南》(第四版)快快到来。

在前公司,有这本书的第二或第三版,也一直将这本书视为经典。但那时并没有深入的去看它前几章的概念性叙述,而是把它当成一本手册来查。现在却刻意地关注了,因为Qomo的底层是以纯理论的OOP为基础的。

今天这本书终于寄到了,但是一读之下,大失所望。不知道作者对JavaScript语言的理解能力不够,还是他对OOP的理解不够。《JavaScript权威指南》这本书对面向对象的叙述不但不专业,而且还错误百出。实在不值一看。

试举几例:

× JavaScript没有正式的类的概念,……,它用构造函数和原型对象模拟了类
事实上,JavaScript的确没有正式的类的概念,但模拟类的只是构造函数而不是类。因为类是“声明”,对象是实体。用“实体”去模拟“声明”原本就说不通。在JScript中,类的检测是通过对构造函数来进行的,而不是一种基于原型的检测。

× JavaScript中的实例属性是那些在对象中用构造函数创建的或初始化的属性
这个问题出现在所谓的“实例属性”还有一种与构造函数无关的情况,也就是直接对原型属性声明。例如“MyObject.prototype.prop_1 = @#abcd@#”,因此上面这种定义是不完整的。

×类属性与类方法
JavaScript中没有“类”,因此也没有类属性与类方法。只不过构造器(函数)也被对象系统理解为“对象”,因此构造器也可以创建新的属性和方法。——这只是它作为一个“单独的对象实例”的特性而已,把这个作为类属性和类方法,很不合逻辑。

类似这样的问题非常之多,显得作者的逻辑很混乱。作者甚至没有办法为读者理清脚本环境与DOM环境的异同,这在第四章关于局部变量、执行环境和作用域等问题的讨论中(4.6~4.7节)尤其突出。

因此,我相信没有多少人能读明白这本书有关JavaScript中对象系统的描述。此外,这本书将JavaScript、DOM和CSS这几种不同层次的体系揉到一起来讲述,尽管使这本书内容显得更为丰富而且刺激了购买,然而也使读者不得不在几个不同的泥坑中跳来跳去,最终无所适从。

因此作为建议,最好是把这本书当成一本手册来查阅,而不是当作理论上的经典。随便说一点,这不是翻译的过错,而真的是作者的问题。

出自同一家出版社的《Delphi技术手册》的翻译被一些人骂得很惨,但事实上是读不懂书的人在胡言。——那本书的翻译得是非常精道的,一些看似拗口的译文其实很精准,多读两遍就懂了。与此相较,这本《JavaScript权威指南》的作者,看起来对“JavaScript的对象系统”就未必深彻地了解和思考过了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网