2017-02-05 3 views
0

Ich habe ein seltsames Problem, für das ich keine Lösung finden konnte. Es könnte sein, dass niemand dieses Problem hatte, oder es könnte die Tatsache sein, dass ich auf was zu Google ziemlich verloren bin.Mein JavaScript-Objekt hat ein Längenfeld, das ich nicht zugewiesen habe

Hier ist was los ist. Ich baue eine Rock-Paper-Scissors Machine-Learning-Demo, und ich habe zwei JavaScript-Objekte, die wichtig für das Skript sind. Diese beiden Objekte sind winners (ein Objekt, das was was schlägt) und history (verfolgt alle Spiele).

An der Spitze von meinem Skript, mache ich diese beiden Objekte, wie zum Beispiel:

var winners = { 

} 

var history = { 

} 

Nun zum Problem Ich erhalte. Ich habe den Rest des Codes gemacht, aber es ist irrelevant, denn wenn ich es ausdepretiere und ich p5.js benutze, habe ich eine Preload-Funktion, wo ich einfach beide Objekte ausdrucke.

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

Dann gehe ich in Chrome und führen Sie die HTML, die das Skript verwendet, öffnen Sie die Konsole. Ich sollte sehen:

Object {} 
Object {} 

Aber NOPE!

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

Das Gewinnerobjekt ist nur ein leeres Objekt, aber mein History-Objekt hat ein Längenattribut sowie einige andere Dinge. All mein anderer Code ist auskommentiert, das verspreche ich.

Warum hat mein history-Objekt das Zeug und wie kann ich es loswerden?

enter image description here

+0

Daneel, ich habe einige Ihrer Fragen bearbeitet, wie Sie die Worte "Java" verwenden, „JavaScript "und" JSON "als austauschbare Synonyme, die sie nicht sind. Jeder stellt eine andere Technologie dar und es tut nie weh, um genau zu sein. –

Antwort

4

Der Browser enthält ein window.history Objekt, das ist das, was Sie in dem Konsolenprotokoll sehen. Weitere Informationen zu diesem Objekt finden Sie hier: https://developer.mozilla.org/en-US/docs/Web/API/Window/history

Um dieses Problem zu umgehen, verwenden Sie einen anderen Namen für Ihr Verlaufsobjekt.

+0

Verstanden. Vielen Dank!! Ich akzeptiere deine Antwort, sobald sie mich lässt. –

+0

Lustig: Firefox warnt davor in der Konsole (* TypeError: Einstellung einer Eigenschaft, die nur einen Getter * hat) aber Chrome gibt vor, dass es die Änderung akzeptiert, um sie dann zu verwerfen. –

Verwandte Themen