面向对象的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);