一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

js 模擬實現(xiàn)類似c#下的hashtable的簡單功能代碼

如果在c#中,我們只要用hashtable或者dictionary根據(jù)key取value的特性,就可以很輕松地實現(xiàn)這個功能了。其實我們稍作處理,js也可以實現(xiàn)類似hashtable的功能。下面總結(jié)一下筆者開發(fā)中用到的實現(xiàn)方式,貼代碼為主。
1、實現(xiàn)思路:主要就是利用原型(prototype)的hasOwnProperty方法,確定對象中的項是該添加、移除還是取出某個匹配的項等。hasOwnProperty比遍歷數(shù)組取值靈巧快速的地方在于:至少從代碼上來看,它是O(1)復(fù)雜度的。
2、實現(xiàn)代碼
復(fù)制代碼 代碼如下:
// js哈希表
function HashTable() {
this.ObjArr = {};
this.Count = 0;
//添加
this.Add = function(key, value) {
if (this.ObjArr.hasOwnProperty(key)) {
return false; //如果鍵已經(jīng)存在,不添加
}
else {
this.ObjArr[key] = value;
this.Count++;
return true;
}
}
//是否包含某項
this.Contains = function(key) {
return this.ObjArr.hasOwnProperty(key);
}
//取某一項 其實等價于this.ObjArr[key]
this.GetValue = function(key) {
if (this.Contains(key)) {
return this.ObjArr[key];
}
else {
throw Error("Hashtable not cotains the key: " + String(key)); //腳本錯誤
//return;
}
}
//移除
this.Remove = function(key) {
if (this.Contains(key)) {
delete this.ObjArr[key];
this.Count--;
}
}
//清空
this.Clear = function() {
this.ObjArr = {}; this.Count = 0;
}
}

3、測試代碼
代碼
復(fù)制代碼 代碼如下:
//員工
function employee(id, userName) {
this.id = id;
this.userName = userName;
}
function test() {
var ht = new HashTable();
var tmpEmployee = null;
for (var i = 1; i < 6; i++) {
tmpEmployee = new employee(i, "Employee_" + i);
ht.Add(i, tmpEmployee);
}
for (var i = 1; i <= ht.Count; i++) {
alert(ht.GetValue(i).userName); //其實等價于ht.ObjArr[i].userName
//alert(ht.ObjArr[i].userName);
}
ht.Remove(1);
alert(ht.Contains(1)); //false
alert(ht.Contains(2)); //true
//alert(ht.GetValue(1)); //異常
var result = ht.GetValue(2);
if (result != null) {
alert("Employee Id:" + result.id + ";UserName:" + result.userName);
}
ht.Add(2, "這一個key已經(jīng)存在!"); //Add無效
//ht.Clear(); //清空
alert(ht.Count);
}

調(diào)用的時候很簡單,只要new一個hashtable對象,常見的功能就都有了。是不是很簡單?Enjoy it。
小結(jié):原型鏈(prototype鏈)和作用域鏈?zhǔn)莏s的兩個最核心的部分。學(xué)懂并悟透它們,許多復(fù)雜問題都會迎刃而解;好好利用它們的特性,我們可以輕松實現(xiàn)非常靈活高效的功能。

JavaScript技術(shù)js 模擬實現(xiàn)類似c#下的hashtable的簡單功能代碼,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 一二三区在线视频 | 五月婷婷激情综合网 | 成人福利免费在线观看 | 男女激情视频国产免费观看 | 国产线视频精品免费观看视频 | 欧美理论在线观看 | 日本午夜vr影院新入口 | 91精品一区二区三区在线播放 | 国内在线观看精品免费视频 | 在线视频一区二区三区四区 | 四虎永久在线观看视频精品 | 国产玖玖在线观看 | 久久综合九色综合欧洲 | 国产99视频精品草莓免视看 | 午夜免费 | 亚洲乱码一二三四区国产 | 91视频国内| 午夜在线视频免费观看 | 91精品国产丝袜白色高跟鞋 | 精品国产自在现线久久 | 无遮挡一级毛片视频 | 国产精品 视频一区 二区三区 | 国产精品99精品久久免费 | 国语自产免费精品视频在 | 九九国产在线 | 国产精品视频一区二区亚瑟 | 麻豆国产一区 | 六月婷婷激情综合 | 国产真实乱在线更新 | 成人免费观看www在线 | 很黄很黄叫声床戏免费视频 | 成人三级视频在线观看 | 亚洲国产成人久久笫一页 | 91麻精品国产91久久久久 | 日本一区二区三区在线网 | 超级香蕉97视频在线观看一区 | 国产精品免费视频播放 | 亚洲欧洲无码一区二区三区 | 最新69成人精品毛片 | 伊人网在线免费观看 | 四虎国产精品永久地址99新强 |