读书人

运用JS构建简单Map

发布时间: 2012-10-25 10:58:57 作者: rapoo

使用JS构建简单Map
最近使用源生的js处理页面数据,所谓源生的就是指没有经过包装的、最基本的JavaScript代码;
像使用ext,jQuery...说成非源生的代码;自己做个轮子:一个简单的map;
在js里,对象是属性的集合,属性是合法的js标识符,属性名是String类型;
属性可以有值,也可以没值(undefined),属性的值可以是原始类型,也可以是对象;
js里,函数也是对象,值为函数的属性是对象的方法;
可以在运行时为对象添加属性,这也是动态语言的一个特点,这样的特点可以使代码很灵活,同样也可以让代码很难维护;
当创建一个函数时,系统/引擎会自动给它添加一个属性prototype,如:

function getMap(){//初始化map_,给map_对象增加方法,使map_像个Mapvar map_=new Object();//属性加个特殊字符,以区别方法名,统一加下划线_map_.put=function(key,value){    map_[key]=value;} map_.get=function(key){    return map_[key];}map_.remove=function(key){    delete map_[key];}map_.keyset=function(){var ret="";for(var p in map_){    if(typeof p =='string' && p.substring(p.length-1)=="_"){     ret+=",";ret+=p;}}       if(ret==""){return ret.split(","); //empty array}else{return ret.substring(1).split(","); }}return map_;}var map_=getMap();map_.put('id_',"001");map_.put('name_',"anna");alert(map_.keyset()); //id_,name_var keys=map_.keyset();for(var i=0;i<keys.length;i++){        alert(map_.get(keys[i])); //001,then anna}map_.put("course_",new Array());map_.get("course_").push("Math");map_.get("course_").push("English");map_.get("course_").push("Physics");alert(map_.get("course_")); //Math,English,Physics

可以在此map_的基础之上构建复杂点的数据结构,如:树状结构;
js学习中...想看一些关于js优化、内存管理的书籍,了解的同仁可以推荐一下,OTZ


读书人网 >JavaScript

热点推荐