天天看點

javascript泛型集合類(轉)

前一陣比較忙,一直沒空寫部落格...這幾天好容易抽了點空了,昨天發了個資料庫操作元件,今天決定人品爆發一下,把一直醞釀的javascript的泛型集合類給分享給大家.

首先聲明:我的東西不一定适合你,如果你有中肯的評價我很歡迎,如果是沒有什麼建設性的評論......我先郁悶下..~~~

我以前釋出過一個Hash類,不過現在它更新了.關于javascript的泛型集合類,我這有:List,Dictionary,Stack,Queue共4個.

其中,List,Stack,Queue其實是基于Array實作的,而Dictionary則是用了我之前寫的Hash的一些做法,是基于Object的,是以getItem,remove之類的時間複雜度是1,而不是數組的周遊n(這一點,是哈希這種資料結構的意義所在,我想了不少的方案,在園子裡Kenneth Jing,Jeffrey Zhao等的讨論和幫助下,找到了一個比較滿意的方案 :) )

可能這個泛型類庫放出來,大家讨論的會比較多...關于它的存在價值我不想多說,不過我想說一點,如果你隻是在前台使用,那麼它不适合你,它适合建構比較複雜系統,需要多方寫作的場合,适合對js代碼量多一點也無所謂的場合.

針對連同Hash一共5個類,我寫了全部的源代碼和測試代碼,一并在這裡下載下傳.

下面我簡單例舉幾個使用示例,關于其内部實作,都在源代碼中,如果你有問題或有建議,你可以留言,或者聯系我的QQ:150866957.另外,如果你找到了BUG,請一定聯系我,謝謝.

還有......本類庫是基于asp.net ajax的(因為我需要它的類型簽名系統嘛),暫時我沒有做成純js的泛型類庫的打算,我是打算吊死在asp.net ajax這棵樹上了,如果你有你的需要,你可以随意更改.

1)Hash

2)List

3)Dictionary

 4)Stack

5)Queue

歡迎大家指定讨論 :)

補:大家可能對效率方面的想法比較多,可以告訴大家,在debug版開發時,會進行類型方面的驗證操作; 

建議在釋出的時候,把驗證的代碼全部去除掉,List,Stack,Queue的效率和array是一樣的;另外,Hash和Dictionary不是基于數組的,是用Object實作的,在進行鍵值操作時效率是最高的.這種做法和Asp,net ajax是一樣的 :)