Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在js中将对象放入HashMap?_Javascript - Fatal编程技术网

Javascript 如何在js中将对象放入HashMap?

Javascript 如何在js中将对象放入HashMap?,javascript,Javascript,我像这样创建了一个简单的HashMap,但是当我把对象作为值放到这个映射中时,我不能调用对象的函数,当我从映射中得到它时,我发现对象被toString函数转换成字符串。那么,我应该怎么做才能将对象本身而不是字符串放入映射中呢 var g_itemMap = { put : function(key,value){this[key] = value}, get : function(key){return this[key]}, contains : function(ke

我像这样创建了一个简单的
HashMap
,但是当我把
对象作为
放到这个映射中时,我不能调用
对象的函数
,当我从映射中得到它时,我发现
对象
toString
函数转换成
字符串。那么,我应该怎么做才能将
对象本身
而不是字符串放入映射中呢

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]

这个代码看起来对我有用。 你可以试试这个

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();
小提琴链接:

或者你可以简单地使用

var HashMap = {"Key1":"value1","Key2":"value2"}
function get(k)
{
   console.log(HashMap[k]);
}
如果我尝试

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();

在我看来,警报('b')正确吗…:-)

在代码中,您将对象放在何处?您确定没有意外地将对象作为键而不是值放在代码中吗?Javascript会自动将对象属性名称强制为字符串,但它不会对值执行类似的操作。可能我的对象有一些错误。我的方法是corret。您的所有代码都是corret。我在使用revert函数时删除了我的对象:-)
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();