日期:2014-05-16  浏览次数:20395 次

Javascript类实现

类是什么??

  许多刚接触编程的朋友都可能理解不了类,其实类是对我们这个现实世界的模拟,把它说成“类别”或者“类型”可能会更容易理解一些。比如“人”这种动物就是一个类,而具体某一个人就是“人”这个类的一个实例,“人”可以有许多实例(地球人超过六十亿了),但“人”这个类只有一个。你或许会说那男人和女人不也是人么?怎么只能有一个?其实这里要谈到一个继承的东西,后边才讲,请继续看下去。?

如何建立一个类??
  在C++中是以class来声明一个类的,JavaScript与C++不同,它使用了与函数一样的function来声明,这就让许多学Jscript的朋友把类与函数混在一起了,在Jscript中函数与类确实有些混,但使用久了自然而然会理解,这篇文章是针对想进攻面向对象编程的朋友而写,就不打算一下子讨论得太深了。?
  请看下边这个类的定义:?
  ?
  function?WuYouUser()?
  {?
    this.Name;?//名字?
  }?
  ?
  上边的代码定义了一个WuYouUser(无忧用户)类,它有个属性:Name(名字)。Name就是WuYouUser类的一个属性。?
  一个类有固定的属性,但类的实例却有不同的属性值,就像我是属于“人”这个类的,性别是男,而我有一个女同学,她也属于“人”类,但她的性别属性值却为女。?
  那么如何声明某个类的一个实例呢?非常简单:?
  ?
  var?Wo?=?new?WuYouUser();?//实例一:“我”?
  var?Biyuan?=?new?WuYouUser();?//实例二:“碧原”(Biyuan哥,不好意思。。。嘿嘿)?


类的属性?

  这个Wo(我)就是WuYouUser类的一个实例,它拥有WuYouUser给它的一切:Name属性、Sex属性以及Age属性,我们可以这样子来设置它的属性:?
  ?
  Wo.Name?=?"泣红亭";?
  ?
  很简单是不是?试着运行?
  ?
  window.document.write(Wo.Name);?
  ?
  看看,是不是输出了我的名字:泣红亭??
  ?
  同样设置一下碧原兄的属性?
  ?
  Biyuan.Name?=?"碧原";?
  ?
  运行?
  ?
    window.document.write(Biyuan.Name);?
    ?
  可以看到输出了"碧原",也就说明了Biyuan与Wo同样是WuYouUser类的实例,但却是不同的实体,具有不同的属性值。?
  ?
  属性是可以设置默认值的,无忧里都有记录大家各自发了多少贴子,我们也同样给WuYouUser类添加一个发贴数量的属性ArticleCount?
  ?
  function?WuYouUser()?
  {?
    this.Name;?
    this.ArticleCount?=?0;?
  }?
  ?
  一个无忧新用户刚注册完之后他的发贴数量为0,在上边的代码中可以看到直接给属性ArticleCount设置值为0。?
  ?
  可以运行一下这样的代码:?
  ?
  var?Wo?=?new?WuYouUser();?
  window.document.write(Wo.ArticleCount);?
  ?
  可以看到输出了0,说明ArticleCount属性被我们成功设置默认值为0?


类的方法?
  ?
  方法这个词不大好理解,我觉得说成行为会更容易理解。一个人具有许多共同的行为,比如睡觉、吃饭、走路等等,现在我们给WuYouUser类添加一个发贴的方法。?
  ?
  function?WuYouUser()?
  {?
    this.Name;?
    this.ArticleCount?=?0;?
    ?