1

对不起,糟糕的描述,但有一些类:

Event.Ticker = Class.create();

Object.extend(Event.Tick.prototype, { initialize: function (container, seconds) {

...ETC..

和这段代码:

new Event.Ticker("ID", 20);

所以计数器从 20 下降到 0 我如何在任何时候杀死它?

4

1 回答 1

1

大概有一种方法可以调用

myEvent.Stop()

这可能会调用clearInterval或诸如此类,但这取决于所述接口暴露。

JavaScript 是完全垃圾回收的,没有隐式(或显式)析构函数。如果需要,所有“清理”(例如Stop)都必须明确完成。

没有办法“删除”一个对象,只能让它变得无法访问,在这种情况下,GC 可能会回收(“销毁”)它,如果它感觉像它 - 但是两者都setIntervalsetTimeout保持对回调的强引用 1 ) 将触发回调,即使回调和/或myEvent在其他地方不可强访问 2) 如果其他对象可通过回调访问,则可能会阻止其他对象有资格进行回收。

快乐编码。


请参阅垃圾收集:对象的可达性

于 2011-04-19T04:38:00.920 回答