2016-05-03 21 views
0

Auf der Serverseite habe ich eine Abbildung, wie folgend:Löschen Objekt in JavaScript effizient

  • idmap Hashes eine publicKey zu einem Metadaten-Objekt enthält {GameID, clientID}

  • gameSessionList hasht eine gameID an ein SpielSession-Objekt, das alle logischen Handler des Spiels enthält

Also meine Frage ist, wie würde ich gehen effizient Löschen eines SpielsSession sicher und sauber?

Gerade jetzt, ich tue

delete this.gameSessionList[this.IDMap[publicKey].gameID]; 
delete this.IDMap[publicKey]; 

Aber ich bin nicht sicher, ob es ein bester Weg, dies zu tun. Was genau passiert hier? Mein Verständnis ist der Schlüssel 'gameID' in gameSessionList ist gelöscht und sollte undefiniert sein, wenn Referenz später, während das angefügte gameSession-Objekt dort sitzt und darauf wartet, von der Garbage Collector gesammelt werden. Das gleiche Szenario passiert mit dem Schlüssel 'publicKey' in IDMap.

Bin ich richtig? Ich denke, ich versuche nur den ganzen Prozess auf einer niedrigeren Ebene zu verstehen und zu sehen, ob es richtig gemacht wird.


Oder vielleicht habe ich es falsch, wenn sie als tun löschen oben Ich bin nicht sicher, welche gelöscht wird, der Schlüssel oder der Wert. Und durch "löschen", was wirklich passiert?

+1

Hier ist ein guter Artikel über löschen, für das, was es wert ist. http://perfectionkills.com/understanding-delete/ – RamblinRose

+1

Soweit ich Standard verstehe und meine Erfahrung haben Sie Recht .. Ich würde gerne eine gute Antwort auf diese –

+0

@ RamblinRose sehen: wirklich hilfreich. Vielen Dank – rustyengineer

Antwort

0

http://perfectionkills.com/understanding-delete/

ich löschen. Aber wenn Sie delete aber das Objekt für andere verwendet wird, nichts zu tun und deletereturn false.

delete wurde dafür erstellt und sollte dafür verwendet werden. Es ist eine native Funktion. Keine Implementierung wird besser sein.

wenn delete Druckergebnis zu überprüfen true; In diesem Fall, Erfolg. Aber wenn Sie var zu deklarieren verwenden, hier nichts zu tun. lol

Zum Beispiel dieser in Konsole-Browser:

v1 = 1; 
var v2 = 2; 
delete v1; //this print true. 
delete v2; //this print false. 
Verwandte Themen