Сообщение от Gvozd
			 
		
	 | 
	
		Все-таки как ваш алгоритм от работает на примере? 
var a = {};//адрес - 0x0008
var b = {};//адрес - 0x00A8
a.a = a;
b.a = b;
alert(a == b)
 
равны текущие свойства или нет? Если да, то почему?
	 | 
	
не равны потому что разная память. не продолжаем потому что обнаружено кольцо.