Какой тип объекта отображается в консоли как [текст объекта]?

Скажем, у меня есть следующий элемент:

Here is some emphasized text!

В консоли Javascript я получу его содержимое с помощью jQuery:

> var theContents = $('

Here is some emphasized text!

').contents();

theContentsтеперь это массив, который выглядит так:

> theContents
["Here is some ", ​emphasized​​, " text!"]

Итак далеко так хорошо; похоже, это массив, где элементы 0и 2— строки, а элемент 1— объект jQuery. Если я выведу только первый элемент, это, кажется, подтвердит мою догадку :

> theContents[0]
"Here is some "

. Однако, если я попытаюсь соединить его с другой строкой, я увижу, что мне не хватает некоторого понимания:

> 'Hello! ' + contents[0];
"Hello! [object Text]"

Итак, эта переменная выглядит как строка, но она на самом деле является каким-то объектом. Если на то пошло, объект jQuery в середине также не отображается как обычный объект; он отображается как необработанная разметка.

Другой вопрос относится к той же проблеме, но не объясняет ее. Я обнаружил, что могу использовать contents[0].textContentдля решения моей реальной проблемы, но это все еще не помогает мне понять, что именно здесь происходит. Может кто-нибудь объяснить мне подробно, почему все это ведет себя так, как есть?

9
задан Community 23 May 2017 в 10:08
поделиться