看来这位朋友,到不是搞不清楚java和javascrip应用领域,只是想在编程语言的
方法论思路上探个究竟。
现在一些不严谨书籍或者公司往往喜欢杜撰一些似是而非概念。很多介绍VB6的书籍往往
开宗明义地讲,VB6是一种面向对象的开发语言。而事实上说VB6是基于组件的开发环境可能
还准确点。
"书上说前者面向对象,后者基于对象"
不知道哪本书是这样说的。是不是书上说什么我们就坚定不移的相信什么。
问题首先是 什么叫“面向对象”和"基于对象"。
正好手头有本书《Essential C++》(stanley B.Lippman著,侯捷 译)其中
------------------------------------------------------------
第4章 基于对象的编程风格(Object-Based Programming)
第5章 面向对象编程风格 (Object-Oriented Programming)
-----------------------------------------------------------
对于“面向对象”概念,虽然内涵非常庞大复杂,不过对其基本特征一
般都比较有共识。引用一下《Essential C++》P51中的段落
“面向对象编程概念的两项最基本的特征是:继承(inheritance)和
多态(polymorphism)。前者使我们得以将一群相关的类组织起来,并
让我们得以分享其间的共同数据和操作行为,后者让我们在这些类之上
进行编程时,可以如同操作单一个体,而非相互独立的类,并赋予我们
更多弹性来加入或移除任何特定类。”
而java更是几乎将一切都包含在类之中,并符合以上的所说的特征,而被
称为完全面向对象的语言。
“基于对象”的概念似乎用的不是广泛,所以我觉得也比较含糊不清。
如果一种编程语言能够定义类(class),也许可以就算是基于对象了。
引用《Essential C++》P100中段落
“一般而言,class由两部分组成:一组公开的(public)操作函数和运算符,
以及一组私有的(private)实现细节。这些操作函数和运算符被称为
class's member function(成员函数),并代表这个class的公开借口”。
我只是偶尔用一下javascript,不太熟悉其语法。我觉得js就是比较普通的过程
似脚本语言。似乎其中没有class或者类似的关键字,如果上文的描述可以看做
“Object-Based Programming”的特征。我觉得javascript可能算不上“基于对象”。
javascript做为web脚本语言,实际是在操作html的dom对象。也许这就是这位
朋友书中所讲到“javascript是基于对象”的由来。
不过此“基于对象”和彼“基于对象”,只怕已经是有点牛头不对马嘴之嫌了。