由浅到深了解JavaScript类

作者:泣红亭 来源:无忧脚本 时间:2008-06-16 13:20:00 

最近在无忧脚本混了一阵子,回复了一些贴子,自己却没有做出什么东东让大家看看,心里有些不安,于是写了下边的一点东西,本来应该发在类封装区的,考虑到那里比较冷,而这篇文章我希望能够帮助到更多的朋友,因此放到这里来了。

类是什么?

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

如何建立一个类?

在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

标签:类,javascript,编程
0
投稿

猜你喜欢

  • python操作excel之xlwt与xlrd

    2023-02-11 08:05:52
  • python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    2023-07-25 16:29:47
  • Python流程控制语句的深入讲解

    2023-12-01 00:06:31
  • Python之re操作方法(详解)

    2022-05-15 18:38:15
  • 关于Python中的if __name__ == __main__详情

    2022-05-04 10:16:28
  • MySQL5创建存储过程的示例

    2024-01-12 17:45:35
  • Python+Turtle实现绘制可爱的小仓鼠

    2022-09-16 20:52:28
  • pytorch:model.train和model.eval用法及区别详解

    2022-07-13 19:22:51
  • Python基础之赋值,浅拷贝,深拷贝的区别

    2021-06-28 18:39:15
  • 解决python中 f.write写入中文出错的问题

    2021-01-02 04:57:44
  • Python入门篇之条件、循环

    2021-09-16 16:10:00
  • asp函数转换xml中的实体字符[转义符]

    2008-10-16 17:07:00
  • 网站浏览器兼容的底线

    2007-12-22 11:26:00
  • php之redis短线重连案例讲解

    2023-06-12 13:16:04
  • Python 实现打印单词的菱形字符图案

    2021-06-30 20:08:52
  • WEB前端开发经验总结之实战篇

    2008-06-12 12:49:00
  • 自然描述与自然任务

    2010-01-26 15:51:00
  • 在SQL Server 2005所有表中搜索某个指定列的方法

    2024-01-21 22:50:25
  • Python实现京东抢秒杀功能

    2021-12-06 04:50:17
  • 关于jupyter打开之后不能直接跳转到浏览器的解决方式

    2023-07-17 01:39:55
  • asp之家 网络编程 m.aspxhome.com