Code
<html>
<head>
<title>Example-8.3簡單HashTable類</title>
</head>
<body>
<script>
<!--
function dwn(s)
{
document.write(s + "<br/>");
}
//簡單HashTable類型
function HashTable(){
//特殊關鍵字(specialKey)用來處理特殊的保留字
//這些保留字主要是Object對象中的固有屬性和方法
var specialkey=[
"valueOf",
"hasOwnProperty",
"isPrototypeOf",
"propertyIsEnumerable",
"prototype",
"constructor",
"toLocaleString",
"toString"
];
//為特殊關鍵字單獨提供存放值的空間
var specialvalue=new Array(specialkey.length);
//特殊關鍵字存取標記,true表示該為已經有值,這個時候不能再重複插入
var specialflag=new Array(specialkey.length);
//存放普通關鍵字,只需要一個普通的Object
var normalHashtable={};
//將值插入Hash表
this.insert=function(key,value)
{
//處理特殊關鍵字
for(var i=0;i<specialkey.length;i++)
{
if(key==specialkey[i]) //如果關鍵字等於某個特殊關鍵字
{
if(!specialflag[i]) //如果該位置沒有值
{
specialvalue[i]=value; //插入值
specialflag[i]=true; //置特殊標誌
return true;
}
else return false;
}
}
//處理普通關鍵字
if(key in normalHashtable)return false;
normalHashtable[key]=value;
return true;
}
//在Hash表中尋找
this.find=function(key)
{
//先處理特殊關鍵字
for(var i=0;i<specialkey.length;i++)
{
if(key==specialkey[i])
{
return specialvalue[i];
}
}
//尋找普通關鍵字
return normalHashtable[key];
}
}
var t1=new HashTable();
dwn(t1.insert("prototype","idea"));
dwn(t1.insert("prototype","idea"));
dwn(t1.find("prototype"));
-->
</script>
</body>
</html>