博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典的《JavaScript 权威指南》中的“对象”不经典
阅读量:2241 次
发布时间:2019-05-09

本文共 1158 字,大约阅读时间需要 3 分钟。

这些天在为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的对象系统”就未必深彻地了解和思考过了。

转载地址:http://tehbb.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>