/*
IDEA :
Monitorare il cambiamento di una variabile, per fare questo
dobbiamo utilizzare un oggetto che ci fornisce la possibilità
di utilizare una variabile di qualsiasi tipo purché non sia una
funzione ( JSON compatibile ) .
In sintesi ogni volta che cambia l'oggetto questo esegue una
operazione.
L'esempio utilizza un timeout per simulare un ritardo, questo non
è necessario al fine dell'idea.
PRO :
Controllare lo stato di una variabile a volte risulta
indispensabile per il controllo del codice.
CONTRO :
Come questo esempio occorrono almeno 50 millisecondi per il
trigger dell'evento dal cambiamento della variabile.
*/
// Oggetto da tenere sotto controllo
var _ = {
mex : ""
},
// Copia shadow per il confronto
eye,
// Funzione per clonare un oggetto
clone = function( obj ){
if( !obj || typeof obj != "object" )return {};
var news = {};
for( var key in obj ) {
news[ key ] = obj[ key ];
}
return news;
},
// Evento per ogni cambiamento
observe = function( callback ){
callback = callback || function(){};
eye = clone( _ );
setInterval( function(){
if( JSON.stringify( _ ) !== JSON.stringify( eye ) ){
callback( eye, _ );
eye = clone( _ );
}
} );
};
// Attivo la sentinella
observe( function( old, last ){
// old = l'oggetto prima del cambiamento
// last = l'oggetto aggiornato
console.log( last.mex );
} );
// Setto un nuovo valore
_.mex = "Ciao !";
// Per simulare un vento in ritardo
setTimeout( function(){
_.mex = "Tutto ok...
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Console
Debug your Fiddle with a minimal built-in JavaScript console.