var A = {
b: 6,
c : function(){
alert(5);
}
}
var B = {
sd: "sdff"
}
var C = {
b: 4,
c : function(){
alert(5);
}
}

var map = {

};

var map = {};
map[A] = {};
map[B] = {s:1};
map[C] = {s:3};
alert(map[A].s);
alert(map[B].s);
alert(map[C].s);
最后三个alert全是3也就是说map[C]一下就覆盖了前面的map[A],map[B]那现在需要一个key-value容器,希望object做key怎么搞呢

解决方案 »

  1.   

    ...完全没有理解容器的概念 重头在看一遍 array object 
    自己的意思是不能转换成代码的 要按语言的特性来写代码 
      

  2.   

    我的意思就是你看我往map里添加了三个键值对,其key分别是A,B,C三个对象而最后遍历map,发现里面仍然只有一个键值对,就是最后放进去的C。
    另外,如果A,B,C不是object而是function的话就能达到三个键值对的效果
      

  3.   

    键值必须是字符串,或者标记符号
    var x={
    xx:null,//{},[],null,"字符串",数值,function
    "x1":null,//{},[],null,"字符串",数值,function
    }
      

  4.   


    alert(x.xx)
    alert(x["x"])
    alert(x["x1"])
      

  5.   

    研究了下,之所以函数可以那是因为函数传进去就是一个字符串,就是整个函数的代码,可以作为字符串做key
      

  6.   

    var m={};
    m[object]===>m[object.toString()]var a={},b={},c={};
    则 a.toString()==b.toString()==c.toString();所以 m[a]===m[b]===m[c]
      

  7.   

    谢谢楼上的,我现在也是用的toString方法