2016-05-03 10 views
0

サーバ側では、私は、次のようにマッピングを有する:削除対象効率

  • IDMAP

  • を{gameID、クライアントID}を含むメタデータオブジェクトへ公開をハッシュgameSessionListハッシュa gameIDゲームのすべてのロジックハン​​ドラを含むgameSessionオブジェクト

私の質問は、安全できれいなgameSessionを効率的に削除する方法です。

今、私は

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

をやっているしかし、私はそれがそうするための最良の方法だかはわかりません。ここで正確に何が起こっているのか?私の理解は、のgameSessionListのキー 'gameID'が削除されています。後で参照すると未定義です。添付されたgameSessionオブジェクトがガベージコレクタによって収集されるのを待っています。 IDMapのキー 'publicKey'で同じ状況が発生します。

私は正しいですか?私はちょうど下のレベルでプロセス全体を理解しようとしており、それが正しく行われているかどうかを確認しようとしていると思います。


または私は、キーまたは値を削除されるべきかわからないんだけど、上記のように、削除を行うときに多分私は、それが間違ってました。そして、実際に何が起こっているのかを「削除する」ことによって?

+1

ここで、削除についての良い記事が、それは価値がある何のために、です。 http://perfectionkills.com/understanding-delete/ – RamblinRose

+1

私が標準と私の経験を理解する限り、あなたは正しいです。私はこれについて良い答えを見たいと思っています。 –

+0

@RamblinRose:本当に役立ちます。ありがとうございました – rustyengineer

答えて

0

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

私も削除を使用します。 しかし、あなたがdeleteであるが、そのオブジェクトが他のもののために使用されている場合は、何もしないでください。deletereturn false

deleteがこれ用に作成されています。これは固有の機能です。それ以上の実装はありません。

の場合delete印刷結果を確認するtrue;この場合、成功する。 しかし、宣言にvarを使用すると、ここでは何もしません。コンソールのブラウザで例えば笑

、この:

v1 = 1; 
var v2 = 2; 
delete v1; //this print true. 
delete v2; //this print false. 
関連する問題