我可以有一个javascript对象从内存中删除自己设置它的映射值为空

Can I have a javascript object remove itself from memory by having it set its map value to null?

本文关键字:设置 映射 自己 删除 javascript 有一个 对象 内存 我可以      更新时间:2023-09-26

当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,而是像这样删除映射中的属性:

delete GamesMap[this._id];

这样你就可以在游戏结束后彻底清理了