Объекты имеют более общую природу: они являются неупорядоченными наборами произвольных значений с доступом по ключу. Иначе говоря, вы обращаетесь к элементам по строковому имени (ключу или свойству) вместо числовой позиции (как в случае с массивами).
JS не предоставляет механизм проверки структурного равенства объектных значений — только проверку тождественности ссылок. Чтобы выполнить проверку структурного равенства, придется реализовать проверки самостоятельно.
JS не определяет === как структурное равенство для объектных значений. Вместо этого === использует для объектных значений тождественное равенство.
В JS все объектные значения хранятся по ссылке (см. приложение А, «Значения и ссылки»), присваиваются и передаются копированием ссылки, а в контексте нашего текущего обсуждения сравниваются по ссылочному (тождественному) равенству. Пример:
var x = [ 1, 2, 3 ];
// Присваивание выполняется копированием ссылки,
// поэтому y ссылается на *тот же* массив, что и x,
// а не на его новую копию.
var y = x;
y === x; // true
y === [ 1, 2, 3 ]; // false
x === [ 1, 2, 3 ]; // false