trikadin,
Это вроде уже есть, хоть и не в форме кода. Хоть и не зацикливается, но толку от алгоритма пока мало, ибо на циклических объектах он вполне может показать неопредленный результат |
Gvozd, ну я же говорю - пиздец. Я бы за такое тысяч за 20-30 взялся, вряд ли меньше...
|
Цитата:
И если подходить к вопросу таким образом, то сравнение провести можно просто. Другое дело - нафига оно надо?) |
Цитата:
то есть в примере выше, например, обнаружена цикличность, теперь проверяется РАВНЫ ЛИ ОСТАЛЬНЫЕ СВОЙСТВА этой цикличности, если равны то и цикличности равны)), в данном случае свойств кроме цикличных - нет. |
Вообще что-то я не оч понимаю в чем заморочка. Если есть рекурсия, то коли она находится в обоих объектах на одном и том же месте и ведёт на один и тот же уровень - они, по данной логике, равны.
Те навскидку можно так(без учёта нод, ибо лень и сложно): 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()) |
Цитата:
|
Часовой пояс GMT +3, время: 10:01. |