我的 JavaScript 对象有一个我没有分配的长度字段

My JavaScript object has a length field which I didn't assign

我有一个相当奇怪的问题,我一直找不到解决办法。可能是因为没有人遇到过这个问题,也可能是我不知道要做什么 Google。

这是正在发生的事情。我正在构建剪刀石头布机器学习演示,并且我有两个对脚本很重要的 JavaScript 对象。这两个对象是 winners(存储什么击败什么的对象)和 history(跟踪所有播放)。

在脚本的最顶部,我制作了这两个对象,如下所示:

var winners = {

}

var history = {

}

现在我要解决问题了。我已经完成了其余的代码,但这无关紧要,因为当我将其注释掉时,并且由于我正在使用 p5.js,我有一个预加载函数,我只需打印出两个对象。

function preload(){
    console.log(winners);
    console.log(history);
}

然后我进入Chrome和运行使用脚本的html,打开控制台。我应该看到:

Object {}
Object {}

但是不行!

Object {}
History {length: 1, scrollRestoration: "auto", state: null}

winners 对象只是一个空对象,但我的 history 对象具有 length 属性以及其他一些东西。我保证,我所有的其他代码都被注释掉了。

为什么我的历史对象中有这些东西,我怎样才能去掉它?

浏览器包含一个 window.history 对象,这就是您在控制台日志中看到的内容。在此处查看有关此对象的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/history

要避免此问题,请为您的历史对象使用一个稍微不同的名称。

浏览器中已经有一个名为 history 的 built-in 对象。

您可以在以下位置阅读更多相关信息: