Wann werden JavaScript-Objekte zerstört?
In C ++ kann ich einen Konstruktor und Destruktor explizit definieren und dann in der Konstruktor / Destruktor-Funktion << "C or D Called" mit angeben, um genau zu wissen, wo.
Wie kann ich jedoch in JavaScript feststellen, wann ein Objekt zerstört wurde? Das folgende Beispiel ist der Fall, der mich betrifft.
Ich rufe eine interne Funktion in einem Timeout auf und frage mich, ob das Objekt so lange am Leben bleibt, wie der Timer läuft, und warte auf den nächsten Aufruf.
User Click ruft Control auf
// Calls Control
Steueranrufe Nachricht
var message_object = new Message( response_element );
Nachricht ruft Effekte auf
new Effects().fade( this.element, 'down', 4000 );
message_object.display( 'empty' );
Auswirkungen
/**
*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();
}
};