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);
![]() |
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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视图的运行性能(一)