项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749)。用这个可以满足项目中要求。在找的过程中,发现这么个轻量级的实现。http://www.iteye.com/topic/196610帖子中,二楼myy的回复内容。应该说这个简单地实现可以满足我的一些需求,但它少了size方法。
在这个简单实现的基础上,自己能不能加一个size方法呢?而不地通过封装Array那样的重量级实现。
围绕这个问题,仔细想想还是有点嚼头儿的。
1, JavaScript中“var map = {}” 这样的声明,实质上是什么?是不是等价于“ar map = new Object()”不?
2, 如果像问题1描述那样,是等价的。应该可以通过给Object类prototype地增加size方法。不过这个size方法怎么实现?
3, Size方法的实现,不外乎两种模式:遍历式和注册式。
a) 遍历式:实现起来简单,其思想是,每调用size方法时,遍历Object中的属性,算出其属性(关于属性还有一个问题,见下面的讨论)个数。可以看出,这样的实现其执行效率很低。
b) 注册式:实现思想是,先给Object加一个名为elementSize的属性,在通过map["key1"] = "Value1"方式往Object中另加属性时,通过某种机制自动地增长这个elementSize。如何在map["key1"] = "Value1"执行后,恰当地自增长elementSize?是个问题。毕竟不能像AOP那样地给map["key1"] = "Value1"操作再加一个回调函数。
c) 不论是遍历式还是注册式,它们有一个共性问题,就是如何区分开Object原有的属性和通过map["key1"] = "Value1"方式新加的属性?Object原有的属性又有哪些?
4, 经过3的思考,感觉可以参考JavaScript中Array类的实现,那么这个Array是怎么实现的?能不能像看JDK中的ArrayList那样地看这个Array的源码?
5, 既然有Array,为什么当初设计JavaScript时,没有把Map的实现加进来?
分享到:
相关推荐
自定义javascript的Map类,使用习惯完全依据于java的map使用习惯编写,java中map的用法基本一样,导入包即可使用
原创 在javascript中,仅提供了数组(Array)对象,本文利用数组对象来模式实现MAP对象
里面有三个js文件,都是需要引入的。具体的方法,可以看源码。
javascript实现map,极其方便,可在需要当前页处理多数据时使用
javascript Map原型,对象,实现javascript中的Map数据类型功能
自己设计的用JavaScript实现Array 和Map 里面有三个Js文件,都需要引入.
高性能的 javascript map实现,稳定性强的 基于 JSON的map! *同时附赠网络上搜索的map一个,用于对比。 经过笔者测试,网络上的map不如笔者所写的map性能高,容量也相差很多。
高人把google map的javascript全部下载下来 可以实现大部分功能 离线使用GOOGLEMAP
* put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回NULL * element(index) 获取指定索引的元素...
详解JavaScript中Hash Map映射结构的实现_.docx
1.可以用null,boolean,string,number,array,Date,自定义类的对象作键值,数组里的元素必须是实现equals方法的类型,而且数组里含有null,undefined,NaN会弹出异常; 2.数组维数尽量不要太多,程序里递归检查数组元素...
主要介绍了JavaScript实现Java中Map容器的方法,结合实例形式分析了JavaScript实现Java中Map容器的原理与相关实现技巧,需要的朋友可以参考下
主要介绍了JavaScript中利用Array和Object实现Map的方法,实例分析了javascript实现map的添加、获取、移除、清空、遍历等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
javascript map类。类中有相应demo,在javascript中实现Map的一个类,包括map中对应的一些数据结构相关算法。
javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 <br>List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...
NULL 博文链接:https://xiaojin21cen.iteye.com/blog/1924165
用javaScript实现的map,经过测试,很好用
基于JavaScript的微信理财产品销售系统的设计与实现 基于JavaScript的微信理财产品销售系统的设计与实现 基于JavaScript的微信理财产品销售系统的设计与实现 基于JavaScript的微信理财产品销售系统的设计与实现 ...
ECMAScript 6以前,在JavaScript中实现“键/值”式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定义了一个...
相当不错的例子 可以在前端实现中文输入法,体验的时候请把本机输入法调整为英文