<script src=http://nervgh.github.io/js/recursive-iterator.min.js></script>
<script>
var object = {a:true, b:NaN};
var iterator = new RecursiveIterator(object);
object = null;
console.log('0=', object);
setTimeout(function() {
console.log('1=', iterator.next().value);
}, 1000);
setTimeout(function() {
console.log('2=', iterator.next().value);
}, 2000);
setTimeout(function() {
console.log('3=', iterator.next().value);
}, 3000);
</script>
Кстати, мою статью на хабре про итератор зарезали. Видимо, у них в модерации Максимусы сидят