随笔 - 3461, 文章 - 0, 评论 - 739, 阅读 - 1200万
  管理

面向对象的JavaScript

Posted on   lzhdim  阅读(398)  评论(0编辑  收藏  举报
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);
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2009-03-26 通过事务日志解决SQL Server常见四大故障(二)
2009-03-26 通过事务日志解决SQL Server常见四大故障(一)
2009-03-26 利用索引来提升SQL Server视图的运行性能(二)
2009-03-26 利用索引来提升SQL Server视图的运行性能(一)
2025年3月8日 星期六 【蛇】己卯月丙子日 乙巳年 二月初九 妇女节
您的IP:3.145.109.147,操作系统:未知操作系统,浏览器:未知浏览器
Copyright (C) 2000-2025 Lzhdim Software All Rights Reserved
点击右上角即可分享
微信分享提示