javascript - 我可以通过将其映射值设置为 null 来让 javascript 对象从内存中删除自身吗?

标签 javascript dictionary memory-management

当调用 kill game 时,游戏对象是否会从内存中删除自身?

var GamesMap = {};
var count = 0;

function Game (players, privateGame) {
        if (privateGame) this.privateGame = true;
        else this.privateGame = false;
        this._id = count++;
        this.players = players;
        this.judge = this.setJudge();

        this.killGame() = function() {
                GamesMap[this._id] = null;
        }
}

最佳答案

如果没有对该特定 Game 对象的其他引用(包括事件处理程序和其他类似的持久事物),则通过清除其在 GamesMap 中的引用来清除对其的最后引用 将在 killGame() 方法完成执行时使其符合垃圾回收条件。但是,您能够调用 obj.killGame() 这一事实意味着其他人拥有对它的引用,因此也需要释放该引用。

我建议您不要将属性设置为 null,而是像这样实际删除 map 中的属性:

delete GamesMap[this._id];

所以你在游戏结束后彻底清理。

关于javascript - 我可以通过将其映射值设置为 null 来让 javascript 对象从内存中删除自身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049781/

相关文章:

javascript - 表格的浏览器内 HTML 编辑器?

javascript - 在页面更改或关闭时执行操作

javascript - handsontable 选择编辑器 - 如何同时具有值​​和文本?

c++ - 扫描位数组以获取多个位的模式

javascript - 超时后图像不会重新出现在正确的位置

python - 如何获得一套字典?

c# - 使用预填充键定义字典 ​​c#

scala - 如何按键的长度对 scala 映射进行排序(假设键是字符串)

c - 我该如何处理这个段错误

c - 4 字节字符串与作为字符串读取的 4 字节整数