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

Печатать содержимое объекта JavaScript?

Обычно, если мы просто используем alert(object);, он будет отображаться как [object Object]. Как распечатать все параметры содержимого объекта в JavaScript?

4b9b3361

Ответ 1

Если вы используете Firefox, alert(object.toSource()) должен быть достаточным для простых целей отладки.

Ответ 2

Это даст вам очень хороший результат с отступом объекта JSON:

alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));

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

Ответ 3

Помимо использования отладчика, вы также можете получить доступ ко всем элементам объекта с помощью цикла foreach. Следующая функция printObject должна alert() показывать на вашем объекте все свойства и соответствующие значения.

function printObject(o) {
  var out = '';
  for (var p in o) {
    out += p + ': ' + o[p] + '\n';
  }
  alert(out);
}

// now test it:
var myObject = {'something': 1, 'other thing': 2};
printObject(myObject);

Использование инструмента проверки DOM является предпочтительным, поскольку позволяет вам копать под свойствами, являющимися объектами. Firefox имеет FireBug, но все другие основные браузеры (IE, Chrome, Safari) также имеют встроенные средства для отладки, которые вы должны проверить.

Ответ 4

Если вы просто хотите иметь строковое представление объекта, вы можете использовать функцию JSON.stringify, используя JSON library.

Ответ 5

Печатать содержимое объекта, который вы можете использовать

console.log(obj_str);

вы можете увидеть результат в консоли, как показано ниже.

Object {description: "test"} 

Для открытой консоли нажмите F12 в браузере Chrome, вы найдете вкладку консоли в режиме отладки.

Ответ 6

Вам следует рассмотреть возможность использования FireBug для отладки JavaScript. Это позволит вам в интерактивном режиме просматривать все ваши переменные и даже выполнять сквозные функции.

Ответ 7

Использовать dir (объект). Или вы всегда можете скачать Firebug для Firefox (очень полезно).

Ответ 8

Вы можете Node util.inspect(object) распечатать структуру объекта.

Это особенно полезно, когда ваш объект имеет круговые зависимости, например.

$ node

var obj = {
   "name" : "John",
   "surname" : "Doe"
}
obj.self_ref = obj;

util = require("util");

var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: 'John', surname: 'Doe', self_ref: [Circular] }

В этом случае исключение JSON.stringify исключает: TypeError: Converting circular structure to JSON

Ответ 9

Javascript для всех!

String.prototype.repeat = function(num) {
    if (num < 0) {
        return '';
    } else {
        return new Array(num + 1).join(this);
    }
};

function is_defined(x) {
    return typeof x !== 'undefined';
}

function is_object(x) {
    return Object.prototype.toString.call(x) === "[object Object]";
}

function is_array(x) {
    return Object.prototype.toString.call(x) === "[object Array]";
}

/**
 * Main.
 */
function xlog(v, label) {
    var tab = 0;

    var rt = function() {
        return '    '.repeat(tab);
    };

    // Log Fn
    var lg = function(x) {
        // Limit
        if (tab > 10) return '[...]';
        var r = '';
        if (!is_defined(x)) {
            r = '[VAR: UNDEFINED]';
        } else if (x === '') {
            r = '[VAR: EMPTY STRING]';
        } else if (is_array(x)) {
            r = '[\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + ']';
        } else if (is_object(x)) {
            r = '{\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + '}';
        } else {
            r = x;
        }
        return r;
    };

    // Space
    document.write('\n\n');

    // Log
    document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v));
};



// Demo //

var o = {
    'aaa' : 123,
    'bbb' : 'zzzz',
    'o' : {
        'obj1' : 'val1',
        'obj2' : 'val2',
        'obj3' : [1, 3, 5, 6],
        'obj4' : {
            'a' : 'aaaa',
            'b' : null
        }
    },
    'a' : [ 'asd', 123, false, true ],
    'func' : function() {
        alert('test');
    },
    'fff' : false,
    't' : true,
    'nnn' : null
};

xlog(o, 'Object'); // With label
xlog(o); // Without label

xlog(['asd', 'bbb', 123, true], 'ARRAY Title!');

var no_definido;
xlog(no_definido, 'Undefined!');

xlog(true);

xlog('', 'Empty String');

Ответ 10

Вы также можете использовать метод Prototype Object.inspect(), который "Возвращает строковое представление объекта, ориентированное на отладку".

http://api.prototypejs.org/language/Object/inspect/

Ответ 11

Вы можете предоставить своим объектам собственные методы toString в своих прототипах.

Ответ 12

Вы можете использовать json.js из http://www.json.org/js.html, чтобы изменить данные json на строковые данные.

Ответ 13

Простая функция для предупреждения содержимого объекта или массива.
Вызовите эту функцию с помощью массива или строки или объекта, который он оповещает о содержимом.

Функция

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

Использование

var data = [1, 2, 3, 4];
print_r(data);

Ответ 15

Я столкнулся с подобной проблемой. Причина этого в том, что я использую ajax для извлечения данных. В этом случае я сделал два асинхронных вызова ajax. В одном я просто возвращаю строку msg и показываю в alert. Во втором вызове ajax я выбираю arraylist в json формате и декодирую его в js. Поэтому мой второй запрос используется для обработки первого, и я получал предупреждение об объекте.

Так что просто проверьте. 1. Предупреждение должно содержать строку. 2. Если u получает arrayList или любой другой объект, декодирует его.

Все самое лучшее!