Печать содержимого объекта JavaScript? [дубликат]



этот вопрос уже есть ответ здесь:




  • Как я могу отобразить объект JavaScript?

    31 ответы



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

512   15  

15 ответов:

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

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

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

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

Помимо использования отладчика, вы также можете получить доступ ко всем элементам объекта с помощью foreach петли. Следующее

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

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

console.log(obj_str);

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

Object {description: "test"} 

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

вы могли бы узел util.проверить(объект) чтобы распечатать структуру объекта.

это особенно полезно, когда ваш объект имеет циклические зависимости, например

$ 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

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

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

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');

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

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

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

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

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

функции

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);

Internet Explorer 8 имеет инструменты разработчика, который похож на Firebug для Firefox. В Opera есть Opera DragonFly, а в Google Chrome также есть что-то под названием Инструменты разработчика (Shift+Ctrl+J).

вот более подробный ответ на отладку JavaScript в IE6-8: использование IE8 "инструменты разработчика" для отладки более ранних версий IE

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

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

все лучше всех!

Comments

    Ничего не найдено.