网络编程
位置:首页>> 网络编程>> JavaScript>> javascript面向对象编程(二)

javascript面向对象编程(二)

作者:canque 来源:CanQue@RSSIDEA 发布时间:2008-03-07 12:59:00 

标签:面向对象,编程,oop,javascript

阅读上一篇:javascript面向对象编程(一)

[javascript模拟传统OOP]

javascript是一种非常灵活的语言,它的灵活度足以让你模拟传统的OOP。主流的javascript框架大都实现了这个功能,这里给出我的实现办法:OOP.js(2k)。

[Class.create,创建类]

这个参考了大名鼎鼎的prototype框架的实现,不过也稍有不同。创建类的方法如下:

程序演示页面(1)



<script language="JavaScript">
    //定义class,名为baseClass
    var baseClass = Class.create({
        //类属性
        info: 'This is the original info',
        //构造函数,统一命名init
        init: function(str){
            alert('Create a new class, ' + str + '!');
        },
        //类方法
        setInfo: function(str){
            this.info = str;
        },
        getInfo: function(){
            return this.info;
        }
    });
    //实例化一个类,同时执行构造函数init
    var myClass = new baseClass("well done"); //Create a new class,well done!
    alert(myClass.info);//This is the original info
    alert(myClass.getInfo());//This is the original info
    myClass.setInfo('This is the new info');
    alert(myClass.getInfo());//This is the new info
</script> 

[Class.add,添加原型方法]
javascript可以为类或实例在类定义以外的地方添加方法,甚至是在实例化类以后。而给某实例添加方法有两类,一类是添加原型方法,一类是添加实例方法。详情请看下面这段代码:

程序演示页面(2)

<script language="JavaScript">
    var myClass = Class.create({
        num: 0,
        add: function(num){
            return this.num + num;
        },
        init: function(num){
            this.num = num;
        }
    })
    var obj = new myClass(100);
    var newObj = new myClass(10)
    alert(obj.add(50));//alert 150
    //增加原形方法
    //你也可以使用原生的javascript添加myClass.prototype.add=function(){}
    myClass.add({
        multi: function(num){
            return this.num * num;
        }
    });
    //基于该原型的实例obj,newObj都获得了multi方法
    alert(obj.multi(50));//alert 5000
    alert(newObj.multi(5)); //alert 50
    //增加实例方法
    obj.sub = function(num){
        return this.num - num;
    }
    //实例方法只对该实例有效
    alert(obj.sub(50));//alert 50
    alert(newObj.sub(5)); //error! newObj.sub is not a function 
</script> 

下一篇:javascript面向对象编程(三)

0
投稿

猜你喜欢

  • Java    Java 是由 Sun 公司开发而成的一种编程语言,利用 Jave 写成的小程序叫做 Java
  • 让ASP搭配MYSQL所需要工具mysql-4.1.11-win32 myodbc-3.51.11-1-dll myodbc-3.51.11
  • 1.已知有一个XML文件(bookstore.xml)如下: <?xml version="1.0" e
  • 在今天的设计中,排版常常被忽视,特别是被网页设计师忽视。这真是件遗憾的事情因为CSS可以做很多事情来控制我们的排版。也就是说,我们被局限于某
  • 此文章主要介绍的是MySQL数据库的字符(串)的实际操作步骤,我们大家都知道MySQL数据库的字符(串)在实际操作是经常被用到了,所以你对其
  • 用asp程序进行网页设计,大多因为需要访问数据库,然后再将数据显示到页面,如果数据很多的话,页面的访问速度也就变慢了,为了解决这个问题,可以
  • asp代理采集代码如下:<%Function ProxyPage(url) Set Retrieval&
  • 原来的语句是这样的: select sum(sl0000) from xstfxps2 where dhao00 in ( select d
  • 和朋友讨论时,我提到过一个观点,所有框架层设计中,最核心的是导航设计。最近更看到有国外同行提出“80%的可用性是导航!”因为良好的导航可以保
  • ASP 组件 FILE对象当前,基于浏览器/服务器模式的应用比较流行。当用户需要将文件传输到服务器上时,常用方法之一是运行FTP服务器并将每
  • 一、Browser Capabilities组件 该组件最主要的作用是:提取识别客户端浏览器的版本信息。其原理是这样的:当客户端浏览器向服务
  • 可及,通俗的说是“可以达到”,加上主语和宾语,在“交互设计”这个大的语境下,含义应该是“用户可以达到自己的操作目标”,这不是和“有效性—用户
  • IE(internet explorer)公司:微软(MicroSoft)布局引擎:Trident(也做MSHTML)注:解析渲染
  • 前面我们讲了一些Dreamweaver MX的基本操作,相信大家看了后都会觉得比较简单,的确,这是个工具软件,操作方便应该是它的宗旨。其实网
  • '*****************************************************************
  • 内容摘要:严格地说,ASP 并不是一门编程语言,所以不存在类这一概念,我们这里说 ASP 类是指 A
  • 代码如下:var obj = document.getElementById("name"
  • 网络开发的在分页上要是遇到数(几十)万以上的数据还是用ADO那样的分页会速度很慢的。有了存储过程速度就快多了。下面是本人用50万的数据进行的
  • 虽然今年名义上已经不再管人了,但也不得不掺和进很多人事,这里想简单说说,即使不能帮助这个行业的从业者规划职业道路,也算是把之前摸过的路小结一
  • 百度有啊2009年情人节logo——大纸袋GG给大纸袋MM送了枝玫瑰花,大纸袋MM奖励了大纸袋GG一个吻,好可爱!淘宝网2009年情人节lo
手机版 网络编程 asp之家 www.aspxhome.com