L’opérateur d’égalité par défaut en JavaScript pour les objets donne un résultat true lorsqu’ils font référence au même emplacement en mémoire.
var a = {};
var b = {};
var c = a;
a === b; // => false
a === c; // => true
Si vous avez besoin d’un opérateur d’égalité différent, vous devrez ajouter une méthode equals(other), ou quelque chose comme ça à vos classes et les spécificités de votre problème détermineront ce que cela signifie exactement.
Voici un exemple :
function Person(name, age) {
this.name= name;
this.age= age;
this.equals = function(other) {
return other.name == this.name && other.age == this.age;
};
}
var p1 = new Person("Alex", 22);
var p2 = new Person("Bob", 30);
p1.equals(p2); // => false
p2.equals(new Person("Bob", 30)); // => true
Pour ceux qui utilisent Node, il existe une méthode pratique appelée isDeepStrictEqual dans la bibliothèque nativeutil qui permet de comparer deux objets.