JS 中创建MAP

来源:互联网 发布:mac系统安全性偏好设置 编辑:程序博客网 时间:2024/06/06 03:20
最近使用源生的js处理页面数据,所谓源生的就是指没有经过包装的、最基本的JavaScript代码;
像使用ext,jQuery...说成非源生的代码;自己做个轮子:一个简单的map;
在js里,对象是属性的集合,属性是合法的js标识符,属性名是String类型;
属性可以有值,也可以没值(undefined),属性的值可以是原始类型,也可以是对象;
js里,函数也是对象,值为函数的属性是对象的方法;
可以在运行时为对象添加属性,这也是动态语言的一个特点,这样的特点可以使代码很灵活,同样也可以让代码很难维护;
当创建一个函数时,系统/引擎会自动给它添加一个属性prototype,如:
Javascript代码
 
  1. function Fn(){} 
  2. alert(typeof Fn.prototype); //object 

此时,prototype指向一个对象,或prototype的值为一个对象,这也是默认的赋值;
Javascript代码
  1. Fn.prototype=1; 
  2. alert(typeof Fn.prototype); //number //这样就修改了prototype的值,不过意义不大 

使用prototype可以设计继承机构,我现在还没有足够的内功和口才叙述它,
片面的理解就是一句话:相同类型的对象具备此类型prototype的属性;
下面就看看我的map吧
Javascript代码
  1. function getMap(){//初始化map_,给map_对象增加方法,使map_像个Map 
  2.     var map_=new Object(); 
  3.     //属性加个特殊字符,以区别方法名,统一加下划线_ 
  4.     map_.put=function(key,value){    map_[key]=value;}  
  5.     map_.get=function(key){    return map_[key];} 
  6.     map_.remove=function(key){    delete map_[key];}     
  7.     map_.keyset=function(){ 
  8.         var ret=""
  9.         for(var pin map_){     
  10.             if(typeof p =='string' && p.substring(p.length-1)=="_"){  
  11.                 ret+=","
  12.                 ret+=p; 
  13.             } 
  14.         }            
  15.         if(ret==""){ 
  16.             return ret.split(",");//empty array 
  17.         }else
  18.             return ret.substring(1).split(",");  
  19.         } 
  20.     }    
  21.     return map_; 
  22. var map_=getMap(); 
  23. map_.put('id_',"001"); 
  24. map_.put('name_',"anna"); 
  25. alert(map_.keyset()); //id_,name_ 
  26. var keys=map_.keyset(); 
  27. for(var i=0;i<keys.length;i++){     
  28.     alert(map_.get(keys[i])); //001,then anna 
  29. map_.put("course_",new Array()); 
  30. map_.get("course_").push("Math"); 
  31. map_.get("course_").push("English"); 
  32. map_.get("course_").push("Physics"); 
  33. alert(map_.get("course_")); //Math,English,Physics 
原创粉丝点击