为什么[object Object]提到“对象”两次?

时间:2015-04-24 12:33:11

标签: javascript json object

[object Object]是JavaScript对象的默认字符串表示形式。

我会理解它是[Object]还是[object],但为什么[object Object]?为什么第一个单词是小写,第二个单词是大写?它是JSON还是JavaScript的一部分?

4 个答案:

答案 0 :(得分:48)

所有对象都有toString方法,以[object type]格式显示某些内容,其中type是对象类型。

null上调用时,您获得[object Null],并且在对象上调用时,您会获得字符串[object Object],因为它基于Object constructor(大写“O”),这就是为什么它说object两次,它是对象类型的对象

MDN

JSON是一种轻量级的数据交换格式,除了被命名为“JavaScript Object Notation”之外,它与JavaScript没有任何关系,因为它的编写方式类似于JavaScript对象。

答案 1 :(得分:15)

  

我会理解它只是[Object]或[object],但为什么[object Object]?

因为它是从基本Object类创建的对象

来自the spec

  

返回String值,该值是连接三个字符串" [object",class,"]"的结果。

  

它是JSON还是JavaScript的一部分?

它与JSON完全无关。

答案 2 :(得分:10)

第一个object表示被记录事物的类型是一个对象。它也在语言规范here中进行了硬编码。

第二个Object表示构造函数属性,例如:

Object.prototype.toString.call(""); // [object String]

该算法只是说:“获取对象的[[class]]属性,然后返回'[object'+ class +']'。

答案 3 :(得分:3)

你基本上击中了洞穴的柏拉图墙。如果一切都是对象,那么对象的超集是什么?在这里,答案体现在代码中,它只是对象。

因此所有对象都是对象。

欢迎来到圆形。