最近项目里用js的map结构特别频繁,所以自己写了一个,结构如下(大概描述一下,详细的就不贴了)
[code="java"]function Map{
this.data = {};
}
Map.prototype.put = function(key,value){
this.data[key] = value;
}
Map.prototype.get = function(key){
return this.data[key] ;
}[/code]
原来使用数组实现的this.data = [];
可是使用了ext框架,数组里扩充的方法比较多,for in遍历有点麻烦,就改成这样了。
但是现在出现了比较麻烦的问题
[code="java"]var m = new Map();
m.put("123fff","fishyu2010");[/code]
根本put不进去,我猜想可能是对象不支持以数字开头的属性
本来想在key的前面加个字符,可是
我在项目中已经大量使用了for(var p in m.data){}这样了遍历,这样就会有问题了。
请问高手们有没有好的解决办法。
我测试你写的map,是可以正常put进去的
对象是完全支持以数字开头的属性,只不过引用方式就要改变一下
var obj ={};
obj['111aaa'] = 'aaaa';
这样是完全没问题的,只是不能用obj.111aaa来取属性了
确实是对像不支持数字开头,感觉也没有什么好的方法,我自己是在前面加"_",当读取后把"_"去掉,看看下面的人有没有好的解决办法了
你写错了
应该是这样
function [color=red]Map()[/color] {
this.data = {};
}
对象也是支持以数字开头的属性
function Map{
this.data = {};
}
改成
function Map(){
this.data = {};
}
[code = "js"]
aa.1234='sdf';
SyntaxError: Unexpected number
[/code]
对像是不能以数字开头的
[code = "js"]
aa.1234='sdf';
SyntaxError: Unexpected number
[/code]
对像是不能以数字开头的