Случай 1. сравнение отдельных объектов:
Пока оба работают
Ну, они не делают:
{a: 1} == {a: 1} // false
вы можете ' t сравнивать два различных объекта по двум (или трем) знакам равенства. у вас есть два способа:
JSON.stringify({a: 1}) === JSON.stringify({a: 1})
Или:
{key: 1, a: 1}.key === {key: 1, a: 1}.key
Какой, очевидно, второй более эффективен.
Случай 2. Сравнение неотличимых объектов, например:
var obj1 = {key: 1, a: 1, b: 2}
var obj2 = {key: 2, a: 1, b: 2}
var obj3 = obj1
obj3 === obj1 // true
Нет никакой разницы между их прямым сравнением или сравнением по вашим ключам, оба значения O (1), поскольку js будет сравнивать их по ссылке, а не путем сравнения их пар "ключ-значение".