Показать сообщение отдельно
  #55 (permalink)  
Старый 28.12.2011, 14:10
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,563

Вообще что-то я не оч понимаю в чем заморочка. Если есть рекурсия, то коли она находится в обоих объектах на одном и том же месте и ведёт на один и тот же уровень - они, по данной логике, равны.
Те навскидку можно так(без учёта нод, ибо лень и сложно):
Object.prototype.toString=function(){
  var objects=[];
  return function(){
    var n=objects.indexOf(this);
    if(n>-1)return '[recursion up to level '+n+']';
    objects.push(this);
    var str='{', j;
    for(j in this)str+='\''+j+'\': '+this[j]+',';
    objects.pop();
    return str.slice(0,-1)+'}';
  }
 }();
var a = {ня:3};
var b = {ня:3,'a':a};
a.a = b;
alert(a.toString() == b.toString())
alert(a.toString() +'\n\n'+ b.toString())
__________________
29375, 35

Последний раз редактировалось Aetae, 28.12.2011 в 14:18.
Ответить с цитированием