Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сравниваются объекты в JS? Экономия ресурсов ЦП. 
:(
    Опции темы
Иль
Дата 13.6.2005, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Как сравниваются объекты JS в JS. Имеем две переменные хранящие ссылки на объекты. Интерпритатор ограничивается сравнением ссылок на объекты и выдает true если они на один и тот же объект или он идет вглубь сверяя каждую пару свойств?

Тот же вопрос для Node.

Если он идет в глубь, то я ограничусь сравнением какого-либо уникального свойства, а если нет, то без нагрузки на систему можно if(a==b){...}


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 18.6.2005, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Интерпретатор сравнивает ссылки на обьекты, выдаёт true тогда и только тогда, когда обе указывают на один и тот же обьект. Не важно что обьекты могут быть на твой взгляд "идеентичны".

Короче как во всех интерпретируемых обьектных языках.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 18.6.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Я вот что прошу уточнить, если ссылки указывают на разные объекты, то интерпретатор при сравнении выдаст false полюбэ smile или будет заморачиваться, пока не вывернет объекты на изнанку и не проверит каждую пару свойств. Те можно не боятся за ресурсы и тупо сравнить a==b или всетаки лучше заранее знать о каком-то уникальном свойстве и использовать a.unica==b.unica


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
batigoal
Дата 18.6.2005, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата
если ссылки указывают на разные объекты, то интерпретатор при сравнении выдаст false полюбэ

Именно так. Сравниваются ссылки, а не сами объекты.

Это сообщение отредактировал(а) Lamer George - 18.6.2005, 11:37


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Sardar
Дата 18.6.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Итерпретатор не лезет в содержимое обьекта и не проверяет никаких полей, обьекты ведь разные бывают smile

Скажем так, у интерпретатора есть хешь-таблица/дерево имён переменных(глобальных/локальных), под каждым именем лежит ссылка на обьект(адрес в памяти). Если ссылки разные, то == вернёт false. В Java в базовом интерфейсе java.lang.Object есть метод equals, который любой класс может переопределить если хочет сравнивать себе подобных по контенту. В JS такого метода у Object нет, поэтому пишем свою equals, а при вызове проверяем есть ли такая функция.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 18.6.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



И, кстати, если есть два абсолютно идентичные, скажем, массивы, то ссылки на них не будут идентичны smile
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.