学习JavaScript的时候总会说道,JavaScript是基于对象的语言,而不是面向对象的语言。基于对象和面向对象的区别,或许都可以牵扯到哲学的高度,很多人都在讨论,却一直没有定论。倘或不是为了考试或者其他什么,仅仅就实际应用而言,基于对象或者面向对象并没有什么太大的区别:语言就在那里,不管你把它定义为基于对象还是面向对象,你所要做的并没有什么改变。所以,我们就不提到底是基于对象还是面向对象,仅仅以“面向对象”这几个字一概而论。
说起来JavaScript的对象技术,确实和经典的面向对象语言,如Java、C++有所不同。这使得很多人对在JavaScript中使用了面向对象编程感到很奇怪,或者说是不自然。比如,JavaScript并没有明确的类的概念,至少你是找不到class关键字的——尽管这是表面上的,并且有传言说,JavaScript2.0会增加这一概念,但似乎现在讨论这个问题距离我们已经太过遥远—— 但是它又有着类似类的一些东西。虽然它的继承——这是面向对象的主要特点之一——语法或者说是表达,并不像一个extends关键字或者冒号:那么简单,但终究还是能够顺利的实现的。所以,现在也并不能把JavaScript完全理解为非面向对象的语言。
尽管如此,我们还是希望能够在JavaScript中充分发挥出面向对象的优势来。至少十多年二十年的实践经验告诉我们,面向对象还是有它自己的好处的。我们也希望能够以面向对象的方式来重新看待JavaScript,以便更好的对待Web编程。更重要的是,现在的JavaScript已经不再是一个被世人误解的语言(参见JavaScript: The World's Most Misunderstood Programming Language)。AJAX的出现,以及其他一些RIA的应用,已经充分发挥出JavaScript的优势。或者,当你看到网上流行的很多基于JavaScript的网页游戏时,已经可以想到,JavaScript可以做得更多……那么,我们就需要一个面向对象的JavaScript,来帮助我们完成更加复杂的应用。
这个系列,就是希望能够以面向对象的思想,来看待JavaScript。