转载自: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. Windows python3.3下安装BeautifulSoup

    首先在官网下载:http://www.crummy.com/software/BeautifulSoup/#Download BeautifulSoup在版本4以上都开始支持python3了,所以就下 ...

  2. SpringAOP

    首先导包, 我用的是Spring4.0.4;需要这三个包 Spring-AOP-4.0.4.REALEASE.jar + Spring-aspect-4.0.4.REALEASE.jar +aspec ...

  3. 【poj2773】 Happy 2006

    http://poj.org/problem?id=2773 (题目链接) 题意 给出两个数m,k,要求求出从1开始与m互质的第k个数. Solution 数据范围很大,直接模拟显然是不行的,我们需要 ...

  4. POJ1011 Sticks

    Description George took sticks of the same length and cut them randomly until all parts became at mo ...

  5. openSSL命令、PKI、CA、SSL证书原理

    相关学习资料 http://baike.baidu.com/view/7615.htm?fr=aladdin http://www.ibm.com/developerworks/cn/security ...

  6. 快速上手如何使用FluentData

    http://blog.itpub.net/29511780/viewspace-1194048/ 目录:  一.什么是ORM? 二.使用ORM的优势 三.使用ORM的缺点 四.NET下的ORM框架有 ...

  7. 求三数中Max和猜拳游戏

    方法一: Console.WriteLine("请输入三个数字:"); int a = int.Parse(Console.ReadLine()); int b = int.Par ...

  8. udf提权方法和出现问题汇总

    一.适用条件 1.目标系统是Windows(Win2000,XP,Win2003): 2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数( ...

  9. css 文字换行

    换行word-wrap: break-word 新起一行对长单词进行断句word-break:break-all 本行对长单词进行断句 不换行,强制一行white-space:nowrap table ...

  10. jquery json ajax -2

    如果使用的是虚拟空间, 那么你不能操纵/配置服务器上的php.ini配置文件 但是可以在自己的php文件中, 通过ini_set(...), 和一些对应的函数, 去重置(临时的,仅在当前文件中生效的) ...