Javascript对象不是空的(但它应该是)

时间:2015-07-06 03:15:41

标签: javascript

我在Javascript中遇到了非常奇怪的行为,这是我以前从未见过的。以下是我看到的问题的一般示例:

var myObject = {};
$.each(myDict,function(k,v){
    myObject[k]={nodes:[],links:[]};
    console.log(myObject[v]);
    //then perform some calculations to create a var link and a var node
    myObject[k].links.push(link);
    myObject[k].nodes.push(node); 
})

当我执行console.log(myObject [v])时,它将显示“Object {nodes:Array [0],links:Array [0]}”,这是预期的结果。但是,当我扩展它(在控制台中)时,它显示“links:Array [35]”和“nodes:Array [40]”。我还检查过以确保我推送的链接和节点具有正确的值,然而它们确实如此它们甚至在推送后立即出现在myObject [k] .link中。相反,myObject [v]中神秘地存在的链接和节点在整个地方都有随机的空字段,这是不可能的,因为我生成的链接和节点都没有这样的字段值。

我无法弄清楚为什么世界上的myObject不是空的。我也尝试使用“删除”删除对象,但无济于事 - 我怀疑这可能是一些内存管理问题。这种行为非常奇怪。如果我改变字典字段名称,它也可以一次正常工作,然后在那之后遇到同样的问题也是没有价值的。

之前有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:-1)

在不提及[k]索引的情况下推送。

 myObject.links.push(link);