/** Map 用法. //AM805 s * var map = new Map(); * map.put(" /. ][>?,国a", "aaa"); * map.put("b","bbb"); * map.put("cc","cccc"); * map.put("'/doc/xab[2]/test[1]'","ccc"); * map.remove("cc"); * var array = map.keySet(); * for(var i in array) { * document.write("key:(" + array[i] +") <br>value: ("+map.get(array[i])+") <br>"); * } */ /** * Map的构造函数 */ function Map(){ this.container = new Object(); } /** * 添加一个键-值 */ Map.prototype.put = function(key, value){ this.container[key] = value; } /** * 通过键获取一个值 */ Map.prototype.get = function(key){ return this.container[key]; } /** * 返回该Map对象的键集合 */ Map.prototype.keySet = function() { var keyset = new Array(); var count = 0; for (var key in this.container) { // 跳过object的extend函数 if (key == 'extend') { continue; } keyset[count] = key; count++; } return keyset; } /** * 返回该Map对象的大小 */ Map.prototype.size = function() { var count = 0; for (var key in this.container) { // 跳过object的extend函数 if (key == 'extend'){ continue; } count++; } return count; } /** * 删除Map对象 */ Map.prototype.remove = function(key) { delete this.container[key]; } /** * 返回该Map对象的字符串形式 */ Map.prototype.toString = function(){ var str = ""; for (var i = 0, keys = this.keySet(), len = keys.length; i < len; i++) { str = str + keys[i] + "=" + this.container[keys[i]] + ";\n"; } return str; }