什么时候JavaScript对象被销毁?

在C中,我可以明确定义一个构造函数和析构函数,然后cout<<在构造函数/析构函数中使用“C或D被调用”,要知道哪里。 但是在JavaScript中,如何知道对象何时被破坏。下面的例子是关心我的情况。 我在超时时调用内部函数,我想知道只要定时器正在运行,对象保持活动,等待再次呼叫。 用户点击呼叫控制

// Calls  Control

控制呼叫消息

var message_object = new Message( response_element );

消息调用效果

new Effects().fade( this.element, 'down', 4000 );
message_object.display( 'empty' );

效果

/**
 *Effects - build out as needed
 *  element - holds the element to fade
 *  direction - determines which way to fade the element
 *  max_time - length of the fade
 */

var Effects = function(  ) 
{
    this.fade = function( element, direction, max_time ) 
    {
        element.elapsed = 0;
        clearTimeout( element.timeout_id );
        function next() 
        {
            element.elapsed += 10;
            if ( direction === 'up' )
            {
                element.style.opacity = element.elapsed / max_time;
            }
            else if ( direction === 'down' )
            {
                element.style.opacity = ( max_time - element.elapsed ) / max_time;
            }
            if ( element.elapsed <= max_time ) 
            {
                element.timeout_id = setTimeout( next, 10 );
            }
        }
        next();
    }
};
最佳答案
JS对象本身没有析构函数。

JavaScript对象(和原语)在无法访问时被垃圾回收,这意味着当在当前执行上下文中不可能引用它们时。 JavaScript运行时必须持续监控这一点。所以除非你使用delete关键字来删除某些东西,那么它的破坏就是在引擎盖下。有些浏览器检测到关闭范围中的引用(我正在看着你,Redmond),这是很糟糕的,这就是为什么你经常看到在函数结束时将对象设置为null – 确保在IE中释放内存。

转载注明原文:什么时候JavaScript对象被销毁? - 代码日志