转载自: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<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

使用JS构建简单Map(转)的更多相关文章

  1. javascript自定义简单map对象功能

    这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...

  2. js中的Map对象的简单示例

    es6提供一个对象Map, 其功能类似于java中的Map, 下面是java中的Map和js中的Map的简单对比: js中的Map.set()相当于java中的Map.put(), js中的Map.s ...

  3. 使用 Vuex + Vue.js 构建单页应用

    鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...

  4. 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert

    使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...

  5. Javascript 如何生成Less和Js的Source map

    为什么有Source map CSS和JS脚本正变得越来越复杂,为了解决网络瓶颈,大部分源代码都需要经过编译.合并.压缩才能运用到实际环境中.为了减少网络资源占用,源码一般都会经过以下方式处理: 使用 ...

  6. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  7. angular4.0和angularJS、react.js、vue.js的简单比较

    angularJS特性 模板功能强大丰富(数据绑定大大减少了代码量) 比较完善的前端MVC框架(只要学习这个框架,按照规定往里面填东西就可以完成前端几乎所有的的问题) 引入了Java的一些概念 ang ...

  8. Grunt JS构建环境搭建以及使用入门

    Grunt JS构建环境搭建以及使用入门 1.应用场景 一种自动化任务处理工具,对于日常的需求(代码规则检查.代码合并)可以实现自动化执行,只需要保留package.json和Gruntfile.js ...

  9. iscroll.js的简单使用方法(总结)

    iscroll.js的简单使用方法(总结) 一.总结 一句话总结:Scroll是一个类,每个需要使用滚动功能的区域均要进行初始化. 最佳的HTML结构如下: <div id="wrap ...

随机推荐

  1. 【BZOJ-2879】美食节 最小费用最大流 + 动态建图

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1366  Solved: 737[Submit][Status] ...

  2. linux 的jdk安装

    1.1    解压上传的安装包 1.2   创建安装目录 1.3   将解压后的目录移动到安装目录 1.4    配置环境变量 修改www.qixoo.qixoo.com/etc/profile文件 ...

  3. Android学习笔记03-搭建Win8下的Android开发环境

    一  配置环境变量 (绿色文字标出代码,路径换为自己的SDK路径) ANDROID_HOME =  C:\software\adt-bundle-windows-x86_64-20140702\sdk ...

  4. P1049送给圣诞夜的礼品(矩阵十大问题之四)

    https://vijos.org/p/1049 P1049送给圣诞夜的礼品 Accepted 标签:组合数学送给圣诞夜的礼物[显示标签]     返回代码界面 | 关闭   Pascal Pasca ...

  5. 一排cell就第一个cell要点两次才响应,其他的cell都点一下就响应

    一开始还以为是控件的问题,后来查了下百度,没办法谷歌不能用,结果有人说方法写错了 -(void)tableView:(UITableView *)tableView didSelectRowAtInd ...

  6. Web Service(1.8)

      “基于 XMLWeb Service 的 Java API”(JAX-WS)通过使用注释来指定与 Web Service 实现相关联的元数据以及简化 Web Service 的开发.注释描述如何将 ...

  7. Homebrew安装

    1. 安装Command Line Tools 终端输入 xcode-select --install 回车,若下载慢,可搜索Command line Tools的pkg文件,自行安装. 或者直接安装 ...

  8. c3p0、dbcp<转>

    <!--读取文件jdbc.properties --> <bean id="config" class="org.springframework.bea ...

  9. Struts2中基于Annotation的细粒度权限控制

    Struts2中基于Annotation的细粒度权限控制 2009-10-19 14:25:53|  分类: Struts2 |  标签: |字号大中小 订阅     权限控制是保护系统安全运行很重要 ...

  10. cad2013

    ## ribbon界面? ribbon界面是一种设计ui, 可以认为是传统的  菜单和工具栏  组合. 是 用于 实时显示 + 面向结果的 设计ui 但并不是所有的程序都适合.  ribbon 并不是 ...