Kiedy obiekty JavaScript są niszczone?

W C ++ mogę jawnie zdefiniować konstruktor i destruktor, a następnie cout << "C lub D Wywołany" z z w funkcji konstruktor / destruktor, aby dokładnie wiedzieć, gdzie.

Jednak w JavaScript, skąd mam wiedzieć, kiedy obiekt jest niszczony. Poniższy przykład dotyczy sprawy, która mnie dotyczy.

W przypadku przekroczenia limitu czasu wywoływam funkcję wewnętrzną i zastanawiam się, czy obiekt pozostanie żywy tak długo, jak działa timer, czekając na ponowne wywołanie następnego.

Użytkownik Kliknij połączenia Sterowanie

// Calls  Control

Połączenia sterujące Wiadomość

var message_object = new Message( response_element );

Wiadomość wywołuje efekty

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

Ruchomości

/**
 *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();
    }
};

questionAnswers(4)

yourAnswerToTheQuestion