что означает [объект объекта]? - PullRequest
85 голосов
/ 20 января 2011

Я пытаюсь предупредить возвращаемое значение из функции, и я получаю это в предупреждении

[объект]

вот код 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 - это функция, которую я пытаюсь проверить

Ответы [ 8 ]

94 голосов
/ 21 августа 2014

Как уже отмечали другие, это сериализация объекта по умолчанию. Но почему это [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));
}

39 голосов
/ 20 января 2011

Преобразование по умолчанию из объекта в строку: "[object Object]".

Поскольку вы имеете дело с объектами jQuery, вам может потребоваться

alert(whichIsVisible()[0].id);

для печати идентификатора элемента.

Как уже упоминалось в комментариях, вы должны использовать инструменты, включенные в браузеры, такие как Firefox или Chrome, для анализа объектов, выполнив console.log(whichIsVisible()) вместо alert.

Sidenote : Идентификаторы не должны начинаться с цифр.

19 голосов
/ 20 января 2011

[object Object] - это стандартное представление toString объекта в javascript.

Если вы хотите узнать свойства вашего объекта, просто передвигайтесь над ним так:

for(var property in obj) {
    alert(property + "=" + obj[property]);
}

В вашем конкретном случае вы получаете объект jQuery. Попробуйте сделать это вместо:

$('#senddvd').click(function ()
{
   alert('hello');
   var a=whichIsVisible();
   alert(whichIsVisible().attr("id"));
});

Это должно предупредить идентификатор видимого элемента.

11 голосов
/ 20 января 2011

Это значение, возвращаемое функцией toString() этого объекта.


Я понимаю, что вы пытаетесь сделать, потому что я ответил на ваш вчерашний вопрос об определении, какой div является видимым. :)
Функция whichIsVisible() возвращает реальный объект jQuery, потому что я думал, что это будет программно полезным. Если вы хотите использовать эту функцию для целей отладки, вы можете просто сделать что-то вроде этого:

function whichIsVisible_v2()
{
    if (!$1.is(':hidden')) return '#1';
    if (!$2.is(':hidden')) return '#2';
}

Тем не менее, вы действительно должны использовать правильный отладчик вместо alert(), если вы пытаетесь отладить проблему. Если вы используете Firefox, Firebug отлично. Если вы используете IE8, Safari или Chrome, у них есть встроенные отладчики.

5 голосов
/ 01 августа 2018

Вы можете видеть значение внутри [объекта Object], как это

Alert.alert(  JSON.stringify(userDate)  );

Попробуй вот так

    realm.write(() => {
       const userFormData = realm.create('User',{
       user_email: value.username,
       user_password: value.password,
      });
     });

      const userDate = realm.objects('User').filtered('user_email == $0', value.username.toString(), );
      Alert.alert(  JSON.stringify(userDate)  );

ссылка

https://off.tokyo/blog/react-native-object-object/

4 голосов
/ 20 января 2011

[object Object] - это строковое представление по умолчанию для JavaScript Object.Это то, что вы получите, запустив этот код:

alert({}); // [object Object]

Вы можете изменить представление по умолчанию, переопределив метод toString следующим образом:

var o = {toString: function(){ return "foo" }};
alert(o); // foo
2 голосов
/ 20 января 2011

У вас есть объект javascript

$1 и $2 являются объектами jquery, возможно, используйте alert($1.text()); для получения текста или alert($1.attr('id'); и т.д ...

вам нужнообрабатывать $1 и $2 как объекты jQuery.

0 голосов
/ 14 июня 2019

Вы пытаетесь вернуть объект.Поскольку нет хорошего способа представить объект в виде строки, значение .toString() объекта автоматически устанавливается как "[object Object]".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...