2016-05-03 54 views
0

在服務器端,我有一個映射如下:刪除對象有效

  • 的idMap散列一個公鑰含有元數據對象{遊戲ID,clientID的}

  • gameSessionList將一個遊戲ID哈希到一個包含所有遊戲邏輯處理程序的gameSession對象

所以我的問題是我將如何去有效地刪除gameSession安全和乾淨?

現在,我在做

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

但我不知道,如果是這樣做的一個最好的辦法。像這裏發生了什麼?我的理解是中的關鍵'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.