Comparação de objetos em JavaScript: por que {} !== {} e como comparar corretamente?
Olá a todos! Comecei a estudar JavaScript recentemente e me deparei com uma situação confusa. Estou tentando comparar dois objetos que parecem exatamente iguais, mas recebo false.
Aqui está meu código:
```javascript
const user1 = { name: 'Anna', age: 25 };
const user2 = { name: 'Anna', age: 25 };
console.log(user1 === user2); // false
console.log(user1 == user2); // também false
```
Eu esperava que fosse true, já que as propriedades e seus valores coincidem! Mas o JavaScript diz que são diferentes. Por que isso acontece?
Entendo que para números e strings funciona normalmente:
```javascript
console.log(5 === 5); // true
console.log('olá' === 'olá'); // true
```
Mas com objetos — não. Tentei comparar usando JSON.stringify:
```javascript
console.log(JSON.stringify(user1) === JSON.stringify(user2)); // true
```
Mas me disseram que é uma má prática, especialmente se os objetos contêm functions ou dates. Alguém pode me explicar como comparar objetos corretamente pelo conteúdo? Existe algum método embutido?