应用场景:
想把函数和函数对应的数据比较直观的存储起来
突然觉得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));
时间: 2024-10-10 06:32:19