Afaik, .watch()
- это только SpiderMonkey (Firefox).
Я поиграл с функцией опроса, я наконец-то придумал это:
var mywatch = (function() {
var last = {
count: 0,
elems: {}
};
return function _REP(cb) {
var curr = {
count: 0,
elems: {}
},
diff = {};
for(var prop in window) {
if( window.hasOwnProperty(prop) ) {
curr.elems[prop] = window[prop]; curr.count++;
}
}
if( curr.count > last.count ) {
for(var comp in curr.elems) {
if( !(comp in last.elems) ) {
diff[comp] = curr.elems[comp];
}
}
last.count = curr.count;
last.elems = curr.elems;
if(typeof cb === 'function')
cb.apply(null, [diff]);
}
setTimeout(function() {
_REP(cb);
}, 400);
};
}());
И затем использую его как:
mywatch(function(diff) {
console.log('NEW GLOBAL(s): ', diff);
});
Имейте в виду, что это обрабатывает только новые глобальные переменные.Но вы можете легко расширить это для случая last.count > curr.count
.Это будет означать, что глобальные переменные были удалены.