Chromium记录错误的javascript值

在构建一个有嵌套数组网格来表示图块的游戏时,我试图确定“相邻”图块类型,并遇到编码错误。

当我试图调试时,我想在console.log中找到一些对象,但是我的浏览器给了我奇怪的输出。 当对象写在一行上时,值似乎有点正确(除了我的那个错误)但是当我想显示对象的其余部分(点击和下滚)时,它显示了完全不同的值。 这是由我造成的吗?

为了更好地说明,这是一个截图 console.log的意外行为

对象声明如下

var TileFactory = function(){ this.l={ x:null, y:null }; this.neighbours={ top:null, topR:null, topL:null, r:null, l:null, bot:null, botR:null, botL:null }; this.buffer; }; 

然后,通过方法快速操作几次(条件链)

有多个答案,有更详细的解释和解决方案。 但是在控制台视图中展开对象时,控制台会输出对象的最新状态。 也许这样做可以减少内存使用,以防这些对象从未被真正查看过。 因此,如果对象在记录后发生了变异,则在展开时会看到不同的结果。

如果对象没有循环结构且没有函数,则将其记录为json字符串可以解决问题。 如果它确实具有循环结构和/或函数,那么您可能需要找到一些深层对象克隆方法。

我个人会避免使用这种日志技术。 无论这样记录的对象是什么,它都不能被gc’ed。 确定应该在发布代码之前删除这些日志。