如何删除javascript画布

saw*_*ard 6 javascript garbage-collection canvas

我想要一堆对象,让我们说:

function Block() {
  this.canvas;
}

blocks = [];
Run Code Online (Sandbox Code Playgroud)

我有时会指出:

block[x] = new Block();
Run Code Online (Sandbox Code Playgroud)

然后:

block.canvas = document.createElement('canvas');
Run Code Online (Sandbox Code Playgroud)

但我也想删除这个新的画布,以便有时释放内存.我只需要这样做:

block.canvas = null; (or whatever the appropriate method is)
Run Code Online (Sandbox Code Playgroud)

那么javascript会在某个阶段释放内存吗?或者是否有明确的方法来删除对象并释放内存?

谢谢!

Sir*_*rko 7

由对象占用的内存,无处引用,由垃圾收集(MDN文档)在JavaScript中恢复.

因此,为了释放内存,您只需删除canvas对象的所有引用,并在下一次运行垃圾收集器时,将再次释放内存.

这可以像你一样使用block.canvas = null;或(取决于对象/属性范围)来完成delete block.canvas.

但请务必删除每个引用.这也可以是DOM或任何其他对象的引用!