Почему [объект Object] дважды упоминает "объект"?
[object Object] - это строковое представление объекта JavaScript по умолчанию.
Я бы понял, было ли это всего лишь [Object]
или [Object]
, но почему [object Object]
? Почему первое слово является строчным, а второе - прописным? Является ли это частью JSON или JavaScript?
Ответы
Ответ 1
Все объекты имеют метод toString
, который отображает что-то в формате [object type]
, где type - тип объекта.
При вызове null
вы получаете [object Null]
, а при вызове объекта вы получаете строку [object Object]
, потому что она основана на Object constructor (capital "O" ), поэтому он говорит object
дважды, это объект типа Object.
MDN
JSON - это облегченный формат обмена данными и на самом деле не имеет ничего общего с JavaScript, кроме имени "Обозначение объекта JavaScript", поскольку он написан как объект JavaScript.
Ответ 2
Я бы понял, было ли это просто [Object] или [object], но почему [object Object]?
Потому что это объект, созданный из базового класса Object
.
Из spec:
Возвращает значение String, которое является результатом объединения трех строк "[object", class и "]".
Является ли это частью JSON или JavaScript?
Это не имеет ничего общего с JSON.
Ответ 3
Первый object
означает, что тип регистрируемой вещи является объектом. Он также жестко закодирован в спецификации языка здесь.
Второй object
обозначает свойство конструктора, например:
Object.prototype.toString.call(""); // [object String]
Алгоритм просто говорит: "Получите свойство [[class]] объекта, а затем верните" [object "+ class + ']'.
Ответ 4
Вы в основном попали в платоновую стену пещеры. Если все является объектом, что такое надмножество объекта? Здесь ответ воплощен в коде, это просто объект.
Следовательно, все объекты являются объектами.
Добро пожаловать в круглость.