Я пытаюсь предупредить возвращаемое значение из функции и получаю это в предупреждении:
[object Object]
Вот код JavaScript:
<script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // hide div#2 when the page is loaded
$main.click(function ()
{
$1.toggle();
$2.toggle();
});
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible());
});
function whichIsVisible()
{
if (!$1.is(':hidden')) return $1;
if (!$2.is(':hidden')) return $2;
}
});
</script>
whichIsVisible
это функция, которую я пытаюсь проверить.
javascript
jquery
Пради
источник
источник
Ответы:
По умолчанию преобразование объекта в строку равно
"[object Object]"
.Поскольку вы имеете дело с объектами jQuery, вы можете сделать
для вывода идентификатора элемента.
Как упоминалось в комментариях, вы должны использовать инструменты, включенные в браузеры, такие как Firefox или Chrome, для интроспекции объектов, выполняя
console.log(whichIsVisible())
вместоalert
.Примечание : идентификаторы не должны начинаться с цифр.
источник
Как отмечали другие, это сериализация объекта по умолчанию. Но почему это
[object Object]
и не просто так[object]
?Это потому, что в Javascript есть разные типы объектов!
stringify(function (){})
->[object Function]
stringify([])
->[object Array]
stringify(/x/)
->[object RegExp]
stringify(new Date)
->[object Date]
stringify({})
->[object Object]
Это потому, что вызывается функция-конструктор
Object
(с заглавной «О»), а термин «объект» (с маленькой «о») относится к структурной природе штуки.Обычно, когда вы говорите об «объектах» в Javascript, вы на самом деле имеете в виду « объекты-объекты », а не другие типы.
где
stringify
должно выглядеть вот так:источник
thingy
JSON.stringify
, кто-то может создать неверное впечатление.Object.prototype.toString.call(undefined)
дает[object Undefined]
?[object Object]
является представлением объекта toString по умолчанию в javascript.Если вы хотите узнать свойства своего объекта, просто выполните над ним foreach следующим образом:
В вашем конкретном случае вы получаете объект jQuery. Попробуйте сделать это вместо этого:
Это должно предупредить идентификатор видимого элемента.
источник
Это значение, возвращаемое
toString()
функцией этого объекта .Я понимаю, что вы пытаетесь сделать, потому что вчера я ответил на ваш вопрос об определении видимого div. :) функция возвращает реальный объект JQuery, потому что я думал , что будет более программно полезным. Если вы хотите использовать эту функцию для отладки, вы можете просто сделать что-то вроде этого:
whichIsVisible()
Тем не менее, вам действительно следует использовать правильный отладчик, а не
alert()
пытаться отладить проблему. Если вы используете Firefox, Firebug отлично подходит. Если вы используете IE8, Safari или Chrome, у них есть встроенные отладчики.источник
Вы можете увидеть значение внутри [object Object] следующим образом
Попробуйте вот так
ссылка
https://off.tokyo/blog/react-native-object-object/
источник
основы
Вы можете этого не знать, но в JavaScript всякий раз, когда мы взаимодействуем со строковыми, числовыми или логическими примитивами, мы попадаем в скрытый мир теней и принуждения объектов.
строка, число, логическое значение, ноль, неопределенное значение и символ.
В JavaScript существует 7 примитивных типов:
undefined
,null
,boolean
,string
,number
,bigint
иsymbol
. Все остальное - объект. Примитивные типыboolean
,string
иnumber
может быть обернут их объектные коллегами. Эти объекты являются экземплярамиBoolean
,String
иNumber
конструкторов соответственно.Если примитивы не имеют свойств, почему
"this is a string".length
возвращает значение?Потому что JavaScript будет легко сопоставлять примитивы и объекты. В этом случае строковое значение приводится к строковому объекту, чтобы получить доступ к длине свойства. Строковый объект используется только в течение доли секунды, после чего его приносят в жертву богам сбора мусора - но в духе телешоу, мы поймем неуловимое существо и сохраним его для дальнейшего анализа ...
Чтобы дополнительно продемонстрировать это, рассмотрим следующий пример, в котором мы добавляем новое свойство в прототип конструктора String.
Таким образом, примитивы имеют доступ ко всем свойствам (включая методы), определенным их соответствующими конструкторами объектов.
Итак, мы увидели, что примитивные типы при необходимости будут соответствующим образом приводиться к своему соответствующему объекту-аналогу.
Анализ
toString()
методаРассмотрим следующий код
Как обсуждалось выше, что на самом деле происходит, когда мы вызываем
toString()
метод для примитивного типа, он должен быть принудительно преобразован в его копию объекта, прежде чем он сможет вызвать метод.т.е.
myNumber.toString()
эквивалентноNumber.prototype.toString.call(myNumber)
и аналогично другим примитивным типам.Но что, если вместо того, чтобы примитивный тип передавался в
toString()
метод соответствующего ему аналога функции конструктора объекта, мы принудительно передаем примитивный тип в качестве параметра вtoString()
метод конструктора функции объекта (Object.prototype.toString.call(x)
)?Взглянем поближе на Object.prototype.toString ()
Согласно документации , когда вызывается метод toString, выполняются следующие шаги:
Понять это на следующем примере
Ссылки: https://es5.github.io/x15.2.html#x15.2.4.2 https://es5.github.io/x9.html#x9.9 https://javascriptweblog.wordpress.com/ 2010/09/27 /-агентурный срок жизни JavaScript-примитивы /
источник
[object Object]
- это строковое представление JavaScript по умолчаниюObject
. Вот что вы получите, если запустите этот код:Вы можете изменить представление по умолчанию, переопределив
toString
метод следующим образом:источник
[object Object]
взялась струна.У вас есть объект javascript
$1
и$2
являются объектами jquery, возможно, используютсяalert($1.text());
для получения текста иalert($1.attr('id');
т. д.вы должны относиться к объектам jQuery
$1
и$2
любить их.источник
Вы пытаетесь вернуть объект. Поскольку нет хорошего способа представить объект в виде строки, значение объекта
.toString()
автоматически устанавливается как"[object Object]"
.источник