[object Object] is the default string representation of a JavaScript Object.
I would understand if it was just [Object]
or [object]
, but wh
I would understand if it was just [Object] or [object], but why [object Object]?
Because it is an object created from the basic Object
class.
From the spec:
Return the String value that is the result of concatenating the three Strings "[object ", class, and "]".
Is it part of JSON or JavaScript?
It has absolutely nothing to do with JSON.
All objects have a toString
method that displays something in the format [object type]
, where type is the object type.
When called on null
you get [object Null]
and when called on an object you get the string [object Object]
because it's based on the Object constructor (capital "O"), that's why it says object
twice, it's an object of the type Object.
MDN
JSON is a lightweight data-interchange format, and doesn't really have anything to do with JavaScript other than being named "JavaScript Object Notation" because it's written like a JavaScript object.
The first object
denotes that the type of the thing being logged is an object. It's also hard-coded in the language specification here.
The second Object
denotes the constructor property, for example:
Object.prototype.toString.call(""); // [object String]
The algorithm just says: "Get the [[class]] property of the object and then return '[object ' + class + ']'.
You've basically hit the platonic wall end of the cave. If everything is an object, what is the superset of object? Here, the answer is embodied in the code, it is simply object.
Hence all Objects are objects.
Welcome to the circularity.