Как уже отмечали другие, это сериализация объекта по умолчанию. Но почему это [object Object]
, а не просто [object]
?
Это потому, что в Javascript есть разные типы объектов!
- Функциональные объекты :
stringify(function (){})
-> [object Function]
- Массив объектов :
stringify([])
-> [object Array]
- объекты RegExp
stringify(/x/)
-> [object RegExp]
- Дата объектов
stringify(new Date)
-> [object Date]
- … еще несколько …
- и Объекты !
stringify({})
-> [object Object]
Это потому, что функция конструктора называется Object
(с большой буквы «O»), а термин «объект» (с маленькой буквы «o») относится к структурной природе вещи.
Обычно, когда вы говорите об "объектах" в Javascript, вы на самом деле имеете в виду" объекты ", а не другие типы.
где stringify
должно выглядеть так:
function stringify (x) {
console.log(Object.prototype.toString.call(x));
}