zoukankan      html  css  js  c++  java
  • 为什么说JavaScript是基于对象的语言?

        “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(){}
     }
    );

     

  • 相关阅读:
    审 讯 技巧
    带参数的多线程的方式
    通达信日线 数据格式
    visual studio 2012 update3
    单实例运行tz
    维特比算法
    Kooboo CMS的安装步骤
    年龄
    富文本编辑器---非常实用的
    printf 打印 unit32_t
  • 原文地址:https://www.cnblogs.com/yao/p/503584.html
Copyright © 2011-2022 走看看