“JavaScript不是面向对象的语言”

    我想说这句话的时候,没有人反对。

    那么什么是面向对象?

    简单地讲,“面向对象就是把现实中的事物抽象化”,“面向对象这个词也许让它叫做面向抽象更加贴切”。

    定义一: 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。

    定义二: 面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。

    JavaScript中有对象的概念吗?

    有,看看这样的脚本,这样写是正确的:

var obj = new Object();
obj.width 
= 12;
alert(obj.width);

    但是JavaScript没有继承的概念,进而也没有多态的概念,事实上,每个JavaScript对象是相同基类的实例。

    很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点(封装,继承,多态)缺一不可,通常“基于对象”使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”没有继承的特点,而“多态”是表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态”,缺少了继承和多态的特性,JavaScript就只是个基于对象的语言。

2006-10-30记:
今天在看jQuery.js时。看到prototype.js相关的一点东西,说到JavaScript的继承。可能我一开始就错了,希望没有误导别人,内容如下:

类的继承其实javascript本身就支持的,不过prototype提供了一种另外的方法。
按照javascript的支持的实现:

var Student=Class.create();
      Student.prototype
=new Person();

      这样就实现了Student继承至Person。
      在使用prototype的情况下可以这么实现:

      var Student=Class.create();
      Object.extend(Student.prototype,Person.prototype);

      子类要增加方法时可使用

Student.prototype.study=function(){};

      或 

Object.extend(Student.prototype,{
           study:
function(){}
 }
);

 

posted on 2006-09-13 21:28 三千 阅读(429) 评论(7)  编辑 收藏 所属分类: [K]. JavaScript

评论:
#1楼  2007-02-09 21:25 | 一醉解千愁      
js,即简单,又高深.
一切的一切都是因为,他太灵活,太随意了
  回复  引用  查看    
#2楼  2007-02-12 18:04 | Jeffrey Zhao      
@一醉解千愁
的确灵活,但是绝对不随意,它的设计非常严谨。
  回复  引用  查看    
#3楼  2007-02-22 14:44 | Anders.Zhao      
javascript 表面看起来简单,实际还是很复杂的.对于程序员来说javascript因为太随意和灵活(动态), 实际上来讲并不见得比java和C#好学(因为它们的语法都是严格定义了的).
  回复  引用  查看    
#4楼 [楼主] 2007-02-22 16:40 | YAO.NET℡      
@Anders.Zhao
同感,接触js的时间比C#长,结果长进不如C#快.
没有好的ide开发工具和调试器.也是编写它更加困难的原因.
  回复  引用  查看    
#5楼  2007-02-27 08:43 | 浪子      
@YAO.NET℡
个人觉得,写javascript关键在于好的编程习惯+严谨的思维。

越来越喜欢javascript,写起代码很是畅快淋漓,呵呵

  回复  引用  查看    
#6楼  2007-03-16 19:04 | Siwei [未注册用户]
JS真的是门好语言,灵活,但是由于过于灵活,所以很容易写“飞”了……正在努力锻炼ing,呵呵。

至于继承,《JS高级程序设计》介绍了几种,Yao.net文章中这种感觉不错:D期待新版JS吧,有class关键字了。

我正在用Aptana,感觉非常不错的调试器。
  回复  引用    
#7楼  2007-05-12 09:19 | 独奏      
@浪子
支持,习惯很重要。
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-10-30 18:57 编辑过


相关链接: