应用场景:
想把函数和函数对应的数据比较直观的存储起来
突然觉得Javascript中的object不够用了 所以自己仿了个java中的hashmap
key支持任何Javascript类型的数据 但是NaN Undefined 这种类型的没有实验
以下是源码
function hashmapfn(){
var p={
rkey:7,
size:0,
obj:{}
};
function getKey(key){
if(typeof key==‘object‘||typeof key===‘function‘) return key.__key;
return key;
}
function autokey(){
var key="diqye_$";
key+=p.rkey;
p.rkey++;
return key;
}
function setKey(key){
if(typeof key==‘object‘||typeof key===‘function‘) return key.__key=autokey();
return key;
}
function contains(key){
return p.obj[getKey(key)]!=null;
}
function put(key,val){
if(!contains(key))p.size++;
p.obj[setKey(key)]=val;
}
function get(key){
return p.obj[getKey(key)];
}
function remove(key){
if(contains(key)){
p.size--;
delete p.obj[getKey(key)];
}
}
function size(){
return p.size;
}
return {
contains:contains,
get:get,
put:put,
size:size,
remove:remove,
p:p
}
}
var k1=/ /g,k2=/ /g,k3=function(){},k4=‘key‘;
var hashmap=hashmapfn();
hashmap.put(k1,1);
hashmap.put(k2,2);
hashmap.put(k3,3);
hashmap.put(k4,4);
console.log(hashmap.get(k1));
console.log(hashmap.get(k2));
console.log(hashmap.get(k3));
console.log(hashmap.get(k4));
原文:http://my.oschina.net/diqye/blog/475629