javaScript没有哈希表让人很郁闷,我说的不是基于字符串,而是以对象为键值,象这样:    { Object: value }我尝试了一下,都是不成。有没有什么办法呢?

解决方案 »

  1.   

    可以成功的
    但要这样var hash = {};
    var obj = {};
    hash[obj] = "a";
    alert(hash[obj]);
      

  2.   

    javaScript的普通对象本身就可以是哈希表
      

  3.   

    楼主意思是以对象为key还是value?
    value的话,没问题,key的话,是不行的.
    对象的key只能是字符串或者数字.value可以是任意值.
    另外, 1L这样也是有问题的哦..
    事实上,你这种最终的key是obj.toString(),也就是chrome下"[object Object]",并不是真的拿对象当key.
    而且你在拿另外一个对象比如hash[obj2]="b". 只会修改上面的值,不会另外多一对键值.
      

  4.   

    我是挖空心思想得到Object的那个“unique adress”,可怎么也不成。toString()不行,结果都是一样"[object Object]";
    parseInt()也不行,返回是“NaN”;
    然后我想办法 Object |= interger,结果是0;
    ......哈希表是很有用的东西,javaScript不支持实在是太遗憾了。
      

  5.   

    你可以计算object的MD5值嘛..拿这个MD5值当key
      

  6.   

    或者你这写一个类例如HashObj, 你的所有object都是这个HashObj类的实例.然后你自己实现这个类的toString方法, 自己计算一个“unique adress”.那也可以哦
      

  7.   

    楼上兄弟的方法很好,而且实现也很容易
    你可以自己写一个类,构造时生成一个绝不重复的key值,然后重写toString方法,直接返回这个key就行了
    js很灵活,同时意味着很多东西需要自己实现
    就像js没有继承,我们可以自己实现,没有重载,我们也可以自己模拟
      

  8.   

    javascript本身就是hash啊,你可以把对象序列化和反序列化使用,或者通过各种中间手段达到你的目的,比如数组或者json串。
      

  9.   

    7楼的方法应该是可行的,但我说的对象是html element,不知道能不能附加属性,firefox据说可以,但不是所有的浏览器都支持。对javaScript还不太熟悉,html element的属性好象和xml element不一样,不是想加就能加的。而且,加上去的属性,估计都是字符串,要是能直接将对象的引用绑定上去就好了。
      

  10.   


    能不能, 行不行, 这些自己试过不就可以了, 尽是道听途说.可以附加任何属性, 只是属性名(不是属性) 必须是字符串我试过呀,比如象这样: document.getElementById('symbol').customProperty = 'value';然后浏览器执行到那儿就挂了。或者,要这样写:document.getElementById('symbol')['customProperty '] = 'value';
    这个倒没有试过。
      

  11.   

    我还试过setAttribute(),也是不行。
      

  12.   

    document.getElementById('symbol')['customProperty '] = 'value';这个可行。结合7楼和12楼的方法,我这个问题算是解决了。