最近AJAX風靡全世界,在CommunityServer中他運用了自己定義的封裝了js,并且可以跨瀏覽器,在較小的應用程序中,他比較適合,而且使用也比較簡單。但是對微軟的Microsoft AJAX還是一點不了解的我,從今天開始也要進入學習,一步一步的去了解,慢慢的深入。在博客園里也看了一些文章,但是他們大都是說AJAXExtendControl的,我想從腳本入手來學習一下Microsoft Ajax,順便也對腳本進行復習一遍,豈不是一舉兩得。從原文件中我們可以看到Microsoft Asp.net Ajax是一個很強大,而且很適合C#開發人員擴展的腳本庫。在Microsoft Asp.net Ajax腳本庫中添加了一個Type及System來對JavaScript對象的擴展。其中擴展并形成類似.NET中常見的命名空間(namespaces),抽象類(inheritance)(注:我是這么認為的,不知道有沒有更好的說法),接口(interfaces),枚舉(enumerations),以及對象反射(reflection),同時也對(字符串)strings,(數組)arrays進行了擴展。這讓我們這些.NET的開發人員,特別是C#開發人員更好,更有效的對腳本的擴展。
? 要達到將普通的JavaScript封裝成類似.NET的框架,Type可謂是功不可沒阿,通過Type中的一些方法可以將我們的腳本注冊到一個類,將一個類注冊到一個命名空間中等等。下面我們將會對前面幾個對應的類似.NET框架的Microsoft Ajax腳本庫進行逐個的介紹。
? 1.Namespaces
? 是一個邏輯分類(個人虛構,如有雷同純屬巧合),及時將很多個類(classes)進行分類,通過Type.registerNamesapce方法可以將一個class(一下稱為"類",雖然它不象話,但總的給個說法吧!)注冊到一個namespace(以下成為"命名空間")中。
? 2.Classes
? 引用Type,所有的類都繼承自JavaScript的object(在.NET中所有的類也是繼承自Object),通過Type.registerClass將一個對象注冊到類中。由于應用一個面向對象的模型,在Microsoft AJAX 腳本庫中也能夠實現繼承基類的對象實例。一個類可以包含四個成員:fields, properties, methods, and events。
??
? fields:可以通過應用當前類的實例對象來引用如myClass.name="MyName";
? properties:通過帶有get和set標記的方法對其進行付值,在Asp.net Ajax中通過"get_"和"set_"與方法名稱結合來給他付值,如果要對一個叫myname的屬性付值,可以通過get_myname和set_myname方法來完成此項任務。
? methods:方法也就是函數,這里對不多說了。
? events:事件主要涉及到一些行為動作,當一個事件被掛起(激活)時,將調用一個或多個從handlers繼承的方法來處理這個事件。
??
? 3. Inheritances
? 眾所周知虛函數是要被重寫的,大多數面向對象的編程語言都支持類的繼承和重寫,但是JavaScript是不支持這項功能的。但是在Asp.net Ajax中通過特殊的方式(以"_"為起始標記的方法將被視為私有方法,將不能在外部類中執行此方法)實現了這種重寫的功能,將會更好的對腳本庫進行擴展。
? 4.Inheritances
? 每一個類都可以繼承自另一個基類,當一個類繼承基類時此類將加載基類中的方法,屬性,事件等,同時可以重寫基類中的方法,事件等或直接調用基類中方法等,Asp.Net Ajax中也實現了這項功能。
? 5.Interfaces
? 接口知識一種約定,并沒有實現方法,同樣在Asp.Net Ajax中也有接口,其實就是定義一個空函數。
? 6.Enumerations
? 通過Type.registerEnum方法可以注冊一個枚舉,它主要是更直觀的表達一個對象。
? 7.Reflection
? 使用反射可以知道類中的信息,對Type進行擴展,提供APIs對類進行分析,從而得到類中的信息。
? 今天先對JavaScript Microsoft Ajax Library(我比較喜歡叫他Microsoft Ajax腳本庫)有一個總體上的認識,第一碰這個東西可能很多理解都是歪理,如果人總是從不懂到懂,逐漸深入也總是需要一個過程。就像當年我對Class怎么也不理解(因為我是在沒有人指導的情況下,自己研究起來的,生物工程就是我的專業-中國十大騙人專業之一,由于沒有注意現在畢業證還寄在學校呢?),希望我對Ajax也能一步一步的弄懂它,如果有不對的地方還請批評指教。
本文轉自網魂小兵博客園博客,原文鏈接:http://www.cnblogs.com/xdotnet/archive/2006/12/22/aspnet_ajax_javascript_extend.html,如需轉載請自行聯系原作者