w3ctech

一个老程序员写的:《面向对象的JavaScript编程:原理与实践》

欢迎直接在GitHub上阅读:https://github.com/haitaoxin/jsoo

1. 简介

初衷

笔者早年编写代码使用过 Motorola 68000 和 x86汇编、C/C++、Pascal、Fortran、PowerBuilder、Visual Basic,后来又短暂接触过Java、Python和Swift。最近这些年来使用最多的是JavaScript(正式名称是ECMAScript,本书经常会缩写为JS)。众所周知,JS问世之初是“难登大雅之堂”的小玩意儿,还要靠冠名Java以壮声势。但是随着浏览器作为软件发布、运行的平台成熟起来,再加上NodeJS项目的兴旺,JS本身的进步和普及程度已经使它成为每一个前台软件工程师和全栈工程师必不可少的工具。

虽然这种语言已经强大到适用于大多数类型的后台服务器程序(更不用说它是前台开发的唯一正式语言),但是还是有人诟病其不够严谨,争论它是不是完全符合面向对象(Object-Oriented)语言的特征。更多的初学者和程序员则是对JS的对象运作机制和使用多少有些含糊不清。这是因为JS的对象跟以前常见的C++或者Java的对象的确有所不同,甚至可以说JS的对象从最初就不像C++或者Java那样经过深思熟虑、严格定义的。但是幸运的是,发展到今天,JS对OO的支持足以实现绝大多数的编程需要。

本书并不想参与任何无谓的或者纯理论的讨论,只想理清JS的对象到底是怎么回事,以及怎么使用JS最有效地面向对象编程,和它的局限性在哪儿。

感谢

非常感谢 Jiang Hao 提供的宝贵意见。

适合的读者

本书不是写给初学者看的。读者需要有一定的JS基础以及“知其然且知其所以然”的态度。如果你学习或者使用了一段时间JavaScript,但是对有些概念还是理解得似是而非,这本书就是试图讲解那些概念背后的来龙去脉(当然这些信息在 ES6 Specification 里都有,但是我相信大多数读者不会喜欢去读那些枯燥的文档)。如果你以前用 C++ 和 Java,对JavaScript的对象、函数、继承、类等等总感觉有些别扭,那这本书可以帮你澄清这些容易混淆的概念。如果你没有 C++ 或者 Java 语言的基础,可以说是喜忧参半:喜的是你不会把 JavaScript 和 C++/Java 里同名不同义的概念混淆,没有先入为主的思维定势;忧的是有些面向对象的概念你可能需要补一补课。

我没有凑字数给出版社的压力,所以本书的内容基本全是干货——我故意避免有任何废话、显而易见的的描述。但是有的概念我会重复好几次,这或者是因为此概念非常重要,或者是因为它不那么容易理解。我相信大多数人和我一样,一个复杂的概念并不是看一遍就过目不忘、运用自如。

所有代码都已使用 Node 6.x LTS 环境或者在最新版本的Chrome浏览器里验证过。这些代码绝大多数都是可以从头跑到尾、并且可在 console 里看到输出结果的。我非常鼓励你把这些代码运行通过后,再按自己的想法改一改,看看结果是不是你期望的。

另外需要抱歉的是有些英文专用单词也许翻译得不是最常见的用法。任何技术上或者翻译上的错误,或者讲述不够清楚、不够细致的地方,还望读者不吝赐教。

引用资料

本书的动力之一就是我读了 Nicolas Zakas 的 《The Principles of Object-Oriented JavaScript》所受到的启发。有些内容的组织结构和代码举例可能会引用其书。本书永久免费,但是我也鼓励有英文阅读能力和财力的读者购买 Zakas 的书学习。

其它好的参考书籍和网站我会逐步列出。

以上内容只是书中第一段,欢迎直接在GitHub上阅读:https://github.com/haitaoxin/jsoo

w3ctech微信

扫码关注w3ctech微信公众号

共收到0条回复