java是纯oop语言,而javascript是基于对象的语言,具有一定的oop特性。
除了在封装、继承、多态等oop特性方面的不同,java和javascript在对“对象”这一概念的理解上也非常不同。
对象的较普遍定义是:具有状态(属性)和行为(方法)的逻辑实体。这个应该是任何oop语言或具有oop特性的语言中通用的定义。
但是在具体实现方面,每种语言有其各自的特点。
javascript中,对象定义为“属性的无序集合”,它将方法也作为对象的属性来理解,这一点与java不同,而且正是由于其将对象视为一种“无序的数据集合”,所以在javascript中定义对象显得比较随意,尤其是在定义对象的方法时,完全跟定义其他属性的方式相同,只要将属性名指向一个函数就可以了。
而在java中,对象的定义主要还是与通用的定义一样,即“对象是具有属性和方法的逻辑实体”,java中的属性和方法有各自的内涵,是区分的。
以上是我的理解,但是总感觉不够深入,可不可以将java中的对象也理解为“属性的无序集合”呢?感觉这种观点很有吸引力,但是java中的理解也很不错,两者深层次有没有统一性呢?或者,对“对象”的理解只是体现了组织代码的不同方式呢?
有点混乱,希望既学过java又学过javascript的前辈多多留言,充分讨论。

解决方案 »

  1.   

    java与javascript没一点关系。。
    http://baike.baidu.com/view/16168.htm1.JavaScript是一种动态、弱类型、基于原型的语言,通过浏览器可以直接执行;而Java是面向对象的编程语言,必须先进行编绎和连接等动作才可执行。   
    2.JavaScript编写在HTML文件中,直接查看网页的原始码,就可以看到JavaScript程式,所以没有保护,任何人都可以透过HTML文件复制程式;而Java应用在网页的程式称为Java Applet(Applet是[小程序]的意思),是和HTML文件分开的。   
    3.JavaScript的结构较为自由松散,而Java和正统的编程语言一样,结构较为严谨。   4.JavaScript不具有读写档案及网络控制等功能,Java则提供了这些功能,但是JavaScript在网页内容的控制和互动性方面,比较方便快捷的。   
    5.javascript多运行于客户端,而java多运行于服务器端。
      

  2.   

    这些我知道,我知道他们两个没有什么关系,我只是在比较这两个语言中对象的实现方式,javascript中把对象理解成“属性的无序集合”,而java中不是这种“集合”式的定义,我感觉不同的理解方法关系到两种语言中在定义对象的时候如何组织代码。
    我只是想,对象就是具有状态和行为的逻辑实体,但是如果不看这种本质,但从代码形式来看,两种语言中的不同定义法就导致了不同的组织代码方式。
      

  3.   

    JavaScript是一种动态、弱类型
    语法更灵活,也更容易出错
      

  4.   

    概念上我觉得javascript无论是对象还是继承都是以对象为单位。
      

  5.   

    看了楼主的一些帖子,是个很有探源溯本精神的一个人,赞一个~
    java我不懂,asp.net用了不少,我也是当类库用,没用直接写什么面向对象,所以说不出来什么。
    至于javascript对象,我的理解就是一个命名的闭包。
    闭包,就是一个单独的变量作用域。属性和方法在javascript里其实几乎没有区分,都是一个变量而已。比如 function fo(){}
    等同于var fo=function(){} 
      

  6.   

    嗯对,概念都差不多,但机制上应该有差别,就是不知道是不是有数学在支持着。
    javascript中的对象就是属性的无序集合,这种处理方式就有些数学化了,好理解。不知道java中是怎么处理的。