Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why [object Object] mentions "object" twice?

[object Object] is the default string representation of a JavaScript Object.

I would understand if it was just [Object] or [object], but why [object Object]? Why the first word is lowercase and the second one is uppercase? Is it part of JSON or JavaScript?

like image 594
exebook Avatar asked Apr 24 '15 12:04

exebook


3 Answers

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.

like image 174
adeneo Avatar answered Nov 12 '22 03:11

adeneo


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.

like image 15
Quentin Avatar answered Nov 12 '22 03:11

Quentin


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 + ']'.

like image 10
Bimper Avatar answered Nov 12 '22 01:11

Bimper