сравнение по значению
Всем привет! Помогите пожалуйста, какой метод следует определить если нужно сравнить два объекта по значению, а не по ссылке?
|
В простейшем случае - привести к строке:
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, время: 14:19. |