Показать сообщение отдельно
  #4 (permalink)  
Старый 25.12.2011, 19:22
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от B@rmaley.e><e Посмотреть сообщение
А как бы Вы сравнивали такое?
var a = {}, b = {};
a.a = a;
b.a = b;
alert(a == b)
a и b идентичны, но разные.

Как видно, сравнение объектов перебором их структуры может быть затратным.
я бы сравнил названия всех ключей. если а этом этапе разницы не обнаружено то, сравнил бы значения ключей.

тут 2 этапа:
1) вначале отыскиваются и сравниваются все примитивные значения, если разница не обнаружена, то.
2) потом сравниваются все остальные ссылки. при том используется не только примитивный метод getValue() а еще и анализ на цикличность ссылок. при том если ссылка ведет на одну и ту же область в памяти то, учитывал бы это как равность. как то так.

а вы?
Ответить с цитированием