博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JS构建简单Map(转)
阅读量:6243 次
发布时间:2019-06-22

本文共 1529 字,大约阅读时间需要 5 分钟。

转载自:http://freejvm.iteye.com/blog/768025

最近使用源生的js处理页面数据,所谓源生的就是指没有经过包装的、最基本的JavaScript代码; 

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

function Fn(){}  alert(typeof Fn.prototype); //object

此时,prototype指向一个对象,或prototype的值为一个对象,这也是默认的赋值;

Fn.prototype=1;  alert(typeof Fn.prototype); //number //这样就修改了prototype的值,不过意义不大

使用prototype可以设计继承机构,我现在还没有足够的内功和口才叙述它, 

片面的理解就是一句话:相同类型的对象具备此类型prototype的属性; 
下面就看看我的map吧 

function getMap(){
//初始化map_,给map_对象增加方法,使map_像个Map var 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

可以在此map_的基础之上构建复杂点的数据结构,如:树状结构; 

js学习中...想看一些关于js优化、内存管理的书籍,了解的同仁可以推荐一下,OTZ 

你可能感兴趣的文章
你优化系统的目标是什么?
查看>>
SVN(64位)报 Failed to load JavaHL Library. 的解决方法
查看>>
基本运算符
查看>>
黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?...
查看>>
Activity的启动模式 4种launchMode Intent.FLAG_NEW_TASK 详解
查看>>
hdu 2254 奥运 **
查看>>
数据结构基础
查看>>
UltraISO制作ISO镜像文件
查看>>
ASP.NET MVC 之自定义HtmlHelper
查看>>
声明顺序
查看>>
memcpy内存重叠的解决
查看>>
保存和恢复activity的状态数据[转]
查看>>
JS中call、apply的用法说明
查看>>
C#中对于Enum类型的遍历
查看>>
使用tomcat启动dubbo项目
查看>>
crontab + shell脚本实现文件重命名
查看>>
谈谈-ConstraintLayout完全解析
查看>>
fluent-ffmpeg 常用函数
查看>>
Robot Framework(十五) 扩展RobotFramework框架——远程库接口
查看>>
Eclipse中没有javax.servlet和javax.servlet.http包的处理办法
查看>>