我正在使用setTimeout来模拟渲染过程,我遇到了这样的结构:
var Renderer = new Class (
{
Implements: Events,
initialize()
{
this.onRender();
},
onRender: function()
{
// some rendering actions
setTimeout(this.onRender.bind(this), 20);
}
});
由于闭包的无限嵌套,这段代码是否存在潜在内存泄漏问题?还是一切正常?到目前为止,我唯一想到的解决方案是将其重写为普通函数。
function Renderer()
{
var onRender = function()
{
// rendering
setTimeout(onRender, 20);
};
onRender();
};
但我不想失去Mootools事件和类。由于某些原因,我也不能使用“单例”(例如window.renderer = new Renderer();)
this.onRender.delay(20, this);
就可以了。你的代码有问题,缺少initialize函数,但我猜你是拿它作为一个例子。 - Dimitar Christoff