сравнение по значению
Всем привет! Помогите пожалуйста, какой метод следует определить если нужно сравнить два объекта по значению, а не по ссылке?
|
В простейшем случае - привести к строке:
JSON.stringify(obj1) === JSON.stringify(obj2). Но во-первых не сработает если объект рекурсивный, во вторых: var foo = { a: 1, b: 2 }; var bar = { b: 2, a: 1 } alert( JSON.stringify(foo) === JSON.stringify(bar) )(результат зависит от браузера) В сложном случае: писать свою функцию или искать готовую. А на самом деле - прекратить сравнивать объект и сравнивать таки нужные значения.) |
Спасибо большое.:thanks:
|
Aetae,
Я щитаю, эти фокусы с json -- в корне порочная практика. Это "не сработает" не только в приведенном вами случае, который Вы, почему-то называете рекурсивным, это не работает никогда. Вы сравниваете 2 разных объекта, допустим по сигнатуре они у вас совпали, но у них (могут быть) разные прототипы, разные области памяти, это семантически 2 разных объекта. Такие фокусы приводят не просто к быдлокоду, а к быдлокоду в терминальной стадии. |
krutoy, бла бла бла. Я так и не делаю.)
|
Часовой пояс GMT +3, время: 20:08. |