![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Как сравниваются объекты JS в JS. Имеем две переменные хранящие ссылки на объекты. Интерпритатор ограничивается сравнением ссылок на объекты и выдает true если они на один и тот же объект или он идет вглубь сверяя каждую пару свойств?
Тот же вопрос для Node. Если он идет в глубь, то я ограничусь сравнением какого-либо уникального свойства, а если нет, то без нагрузки на систему можно if(a==b){...} -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Интерпретатор сравнивает ссылки на обьекты, выдаёт true тогда и только тогда, когда обе указывают на один и тот же обьект. Не важно что обьекты могут быть на твой взгляд "идеентичны".
Короче как во всех интерпретируемых обьектных языках. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Я вот что прошу уточнить, если ссылки указывают на разные объекты, то интерпретатор при сравнении выдаст false полюбэ
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Именно так. Сравниваются ссылки, а не сами объекты. Это сообщение отредактировал(а) Lamer George - 18.6.2005, 11:37 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Итерпретатор не лезет в содержимое обьекта и не проверяет никаких полей, обьекты ведь разные бывают
Скажем так, у интерпретатора есть хешь-таблица/дерево имён переменных(глобальных/локальных), под каждым именем лежит ссылка на обьект(адрес в памяти). Если ссылки разные, то == вернёт false. В Java в базовом интерфейсе java.lang.Object есть метод equals, который любой класс может переопределить если хочет сравнивать себе подобных по контенту. В JS такого метода у Object нет, поэтому пишем свою equals, а при вызове проверяем есть ли такая функция. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
И, кстати, если есть два абсолютно идентичные, скажем, массивы, то ссылки на них не будут идентичны
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |