2013-12-25 2 views
0

Я создаю простой HashMap, как это, но когда я ставлю object в эту карту как value, я не могу назвать object's function, когда я его с карты, я считаю, что object было преобразовать в string по toString функции. Итак, что мне нужно сделать, чтобы положить object itself, а не строку на карту?Как поместить объект в HashMap в js?

var g_itemMap = 
{ 
    put : function(key,value){this[key] = value}, 
    get : function(key){return this[key]}, 
    contains : function(key){return this.get(key) == null?false:true}, 
    remove : function(key){delete this[key]} 
} 

Я поставил объект так:

g_itemMap.put(1, object); 

И получить:

var object = g_itemMap.get(1); 

Когда я называю это функция, то пошло не так:

object.somefunction(); 

предупреждение может отображать объект:

[object BitmapItem] 
+2

Куда вы поместите объект в этот код? – thefourtheye

+0

Сейчас я редактирую его – zzy

+0

Вы уверены, что случайно не поместили объект в качестве ключа, а не как значение? Javascript автоматически связывает имена свойств объектов с строками, но он не делает ничего подобного для значений. – user2357112

ответ

1

Этот код выглядит как работающий для меня. Вы можете попробовать это;

var g_itemMap = 
{ 
    put : function(key,value){this[key] = value}, 
    get : function(key){return this[key]}, 
    contains : function(key){return this.get(key) == null?false:true}, 
    remove : function(key){delete this[key]} 
} 

var object = 
{ 
    objectfunction: function(){ 
     console.log('objectfunction called') 
    } 
} 


g_itemMap.put(1, object); 
var o = g_itemMap.get(1); 
o.objectfunction(); 

ссылка Fiddle: http://jsfiddle.net/hCH8k/

+0

возможно, у моего объекта есть некоторые ошибки – zzy

+0

Мой метод corret.ALL вашего кода corret.I удаляю свой объект, когда я использую функцию возврата :-) – zzy

1
var HashMap = new Object(); 
HashMap[Key1] = Obj1; 
HashMap[Key2] = Obj2; 

function get(k) 
{ 
    console.log(HashMap[k]); 
} 

или просто вы можете использовать

var HashMap = {"Key1":"value1","Key2":"value2"} 
function get(k) 
{ 
    console.log(HashMap[k]); 
} 
0

Если я пытаюсь

var object = { a: function() { alert('b'); } }; 
var g_itemMap = 
{ 
    put : function(key,value){this[key] = value}, 
    get : function(key){return this[key]}, 
    contains : function(key){return this.get(key) == null?false:true}, 
    remove : function(key){delete this[key]} 
} 
g_itemMap.put(1, object); 
var object2 = g_itemMap.get(1); 
object2.a(); 

это предупреждение ('б'), который выглядит правильно, мне ... :-)

Смежные вопросы