Равенство объектов и примитивов
Я знаю, что идентичные объекты не равны, т.е.
var obj = { name: "Value" };
var obj2 = { name: "Value" };
console.log("obj equals obj2: " + (obj === obj2)); //evaluates to false
Все же примитивные типы:
var str = "string1";
var str2 = "string1";
console.log("str equals str2: " + (str === str2)); //evaluates to true
У меня вопрос почему. Почему объекты и примитивы обрабатываются по-разному? Если объект является ничем иным, как пустым контейнером, в котором указаны только те атрибуты, которые вы указываете для контейнера, почему идентичные атрибуты контейнера не будут одинаковыми? Я искал этот ответ на SO и в других местах, но не нашел ответа.
Считается ли объект JS чем-то другим в DOM, чем примитивный тип?
Спасибо