搜索:
首页 >> JavaScript >> Js高级编程 >> javascript面向对象编程(二)

javascript面向对象编程(二)

2008-3-7 作者:canque 来源:CanQue@RSSIDEA 投递文章

阅读上一篇: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面向对象编程(三)

相关文章
手机版 Js高级编程 Asp之家 Aspxhome.com
闽ICP备06017341号