Javascript对象不为空(但应为空)

Javascript对象不为空(但应为空),javascript,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 myObje

我在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]中神秘存在的链接和节点到处都有随机的空字段,这是不可能的,因为我生成的链接和节点都没有这样的字段值

我不明白为什么我的对象不是空的。我也尝试过使用“delete”删除对象,但没有用——我怀疑这可能是内存管理问题。这种行为非常奇怪。同样值得一提的是,如果我更改了dictionary字段名,它只运行了一次,然后我就遇到了同样的问题


以前有人遇到过这个问题吗?

推而不提[k]索引

 myObject.links.push(link);

您是否只是对控制台的显示感到困惑,或者它实际上影响了您的工作代码。控制台通常提供对象的“实时”视图,因此在展开对象时,而不是在登录对象时,可以获得对象的状态,。