Javascript面向对象的几种代码实例(对象,继承,重用,委托,类,事件,枚举)

来源:互联网 发布:山东老年大学网络报名 编辑:程序博客网 时间:2024/05/21 21:01
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);
原创粉丝点击