Подтвердить что ты не робот

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

Как уже отмечали другие, это сериализация объекта по умолчанию. Но почему это [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"), а термин "object" (с маленькой буквы "o") относится к структурной природе вещи.

Обычно, когда вы говорите об "объектах" в Javascript, вы на самом деле имеете в виду " объекты объектов ", а не другие типы.

где stringify должен выглядеть так:

function stringify (x) {
    console.log(Object.prototype.toString.call(x));
}

Ответ 3

[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"));
});

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

Ответ 4

Это значение, возвращаемое этим объектом 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

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

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/

Ответ 6

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

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

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

var o = {toString: function(){ return "foo" }};
alert(o); // foo

Ответ 7

Основы

Возможно, вы этого не знаете, но в JavaScript всякий раз, когда мы взаимодействуем со строковыми, числовыми или логическими примитивами, мы попадаем в скрытый мир теней и приведения объектов.

строка, число, логическое значение, ноль, неопределенное значение и символ.

В JavaScript есть 7 примитивных типов: undefined, null, boolean, string, number, bigint и symbol. Все остальное является объектом. Примитивные типы boolean, string и number могут быть обернуты их объектными аналогами. Эти объекты являются экземплярами конструкторов Boolean, String и Number соответственно.

typeof true; //"boolean"
typeof new Boolean(true); //"object"

typeof "this is a string"; //"string"
typeof new String("this is a string"); //"object"

typeof 123; //"number"
typeof new Number(123); //"object"

Если примитивы не имеют свойств, почему "this is a string".length возвращает значение?

Потому что JavaScript будет легко приводить между примитивами и объектами. В этом случае строковое значение приводится к строковому объекту для доступа к длине свойства. Строковый объект используется только в течение доли секунды, после чего он приносится в жертву богам сборки мусора - но в духе телевизионных открытий мы поймаем неуловимое существо и сохраним его для дальнейшего анализа…

Чтобы продемонстрировать это далее, рассмотрим следующий пример, в котором мы добавляем новое свойство в прототип конструктора String.

String.prototype.sampleProperty = 5;
var str = "this is a string";
str.sampleProperty;            // 5

Таким образом, примитивы имеют доступ ко всем свойствам (включая методы), определенным их соответствующими конструкторами объектов.

Итак, мы увидели, что примитивные типы будут соответствующим образом приводить к соответствующему объектному аналогу при необходимости.

Анализ метода toString()

Рассмотрим следующий код

var myObj    = {lhs: 3, rhs: 2};
var myFunc   = function(){}
var myString = "This is a sample String";
var myNumber = 4;
var myArray  = [2, 3, 5];

myObj.toString();     // "[object Object]"
myFunc.toString();    // "function(){}"
myString.toString();  // "This is a sample String"
myNumber.toString();  // "4"
myArray.toString();   // "2,3,5"

Как обсуждалось выше, в действительности, когда мы вызываем метод toString() для примитивного типа, он должен быть приведен к своему аналогу объекта, прежде чем он сможет вызвать метод.
то есть myNumber.toString() эквивалентно Number.prototype.toString.call(myNumber) и аналогично для других примитивных типов.

Но что если вместо того, чтобы примитивный тип передавался в метод toString() соответствующей ему функции-аналога конструктора Объекта, мы заставляем примитивный тип передаваться в качестве параметра в метод toString() метода-конструктора Объекта (Object.prototype.toString.call(x))?

Присмотритесь к Object.prototype.toString()

Согласно документации, Когда вызывается метод toString, предпринимаются следующие шаги:

  1. Если значение this равно undefined, верните "[object Undefined]".
  2. Если значение this равно null, верните "[object Null]".
  3. Если это значение не указано выше, пусть O будет результатом вызова toObject с передачей значения this в качестве аргумента.
  4. Пусть class будет значением внутреннего свойства [[Class]] для O.
  5. Возвращает значение String, являющееся результатом объединения трех строк "[object ", class и "]".

Поймите это из следующего примера

var myObj       = {lhs: 3, rhs: 2};
var myFunc      = function(){}
var myString    = "This is a sample String";
var myNumber    = 4;
var myArray     = [2, 3, 5];
var myUndefined = undefined;
var myNull      = null;

Object.prototype.toString.call(myObj);        // "[object Object]"
Object.prototype.toString.call(myFunc);       // "[object Function]"
Object.prototype.toString.call(myString);     // "[object String]"
Object.prototype.toString.call(myNumber);     // "[object Number]"
Object.prototype.toString.call(myArray);      // "[object Array]"
Object.prototype.toString.call(myUndefined);  // "[object Undefined]"
Object.prototype.toString.call(myNull);       // "[object Null]"

Ссылки: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/the-secret-life-of-javascript-primitives/

Ответ 8

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

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

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

Ответ 9

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