JavaScript面向对象

JavaScript 是一种解释型的、基于对象的脚本语言。尽管与 C++、C# 这样成熟的面向对象的语言相比,JavaScript的功能要弱一些,但对于它的预期用途而言,JavaScript的功能已经足够大了。但是由于各种各样的原因,我们在实际进行开发的过程中往往忽略了他基于对象的这一特性,以至JavaScript编写的程序显的杂乱无章。这样不仅不易于观看,更不易于修改。今天就让我们来看看JavaScript基于对象的这一特性。

类:
function DelegateObject(){
    var obj = new Object();
    obj.value = "";
    obj.FormatString = null;
    obj.toString = function _toString(){
        if(obj.FormatString != null)
            return this.FormatString(this.Value);
        else
            return this.Value;
    }  
    return obj;
}
var obj = new DelegateObject();

委托:
function DelegateObject(){
    var obj = new Object();
    obj.value = "";
    obj.FormatString = null;
    obj.toString = function _toString(){
        if(obj.FormatString != null)
            return this.FormatString(this.Value);
        else
            return this.Value;
    }  
    return obj;
}

function ConvertToString(value){
    return "Result:" + value;
}
var obj = new DelegateObject();
obj.Value = "Hello World!";
obj.FormatString = ConvertToString;
document.write(obj.toString());

重写:
function DelegateObject(){
    var obj = new Object();
    obj.toString = function _toString(){
        if(obj.FormatString != null)
            return this.FormatString(this.Value);
        else
            return this.Value;
    }  
    return obj;
}

继承:
function DelegateObject(){
    var obj = new Object();
    obj.value = "";
    obj.FormatString = null;
    obj.toString = function _toString(){
        if(obj.FormatString != null)
            return this.FormatString(this.Value);
        else
            return this.Value;
    }  
    return obj;
}
function Class2(){
    var obj = new DelegateObject();
    return obj;
}
function ConvertTOString(value){
    return "Result:" + value;
}

var obj = new Class2();
obj.Value = "Hello World!";
obj.FormatString = ConvertTOString;
document.write(obj.toString());

事件:
function EventHandler(){
    var eventobj = new Object();
    eventobj._eventHandler = null;
    eventobj.Activate = function _activate(){
        if(eventobj._eventHandler != null)
            eventobj._eventHandler();
    }
    eventobj.Add = function _add(eventHandler){
        eventobj._eventHandler = EventHandler;
    }
    eventobj.Remove = function _remove(){
        eventobj._eventHandler = null;
    }
    return eventobj;
}

function mouseClick(){
    alert("Hello World!");
}

var obj = new EventHandler();
obj.Add(mouseClick());
obj.Activate();


枚举:
function _StatusList(){
    var object = new Object();
    object.正常= "Normal";
    object.删除= "Delete";
    object.审核通过= "Auditing";
    object.驳回 = "OverRule";
    return object;
}
Object.prototype.StatusList = new _StatusList();
function TObject(){
    var obj = new Object();
    obj.Type = "YiZhu";
    obj.Status = Object.StatusList.审核通过;
}
alert(obj.Status);




[本日志由 岸上的鱼 于 2008-12-16 01:01 PM 编辑]
文章来自: alocne
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
评论: 0 | 引用: 0 | 查看次数: 2179
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭