打印JavaScript对象的内容?[重复]

2020/09/27 22:21 · javascript ·  · 0评论

通常,如果我们仅使用alert(object);它,它将显示为[object Object]如何在JavaScript中打印对象的所有内容参数?

如果您使用的是Firefox,alert(object.toSource())则只需进行简单的调试即可。

使用缩进的JSON对象,这将为您提供非常好的输出:

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

第二个参数会在返回字符串之前更改字符串的内容。第三个参数指定要用作可读性的空白空间。

除了使用调试器之外,您还可以使用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)也具有内置的调试工具,您应该检查它们。

如果只想使用对象的字符串表示形式,则可以使用JSON库来使用该JSON.stringify函数

您可以使用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

打印可以使用的对象的内容

console.log(obj_str);

您可以在如下所示的控制台中查看结果。

Object {description: "test"} 

对于打开的控制台,请在Chrome浏览器中按F12键,您会在调试模式下找到控制台选项卡。

您应该考虑使用FireBug进行JavaScript调试。它使您可以交互式检查所有变量,甚至逐步执行功能。

使用dir(object)。或者,您始终可以下载Firefox的Firebug(非常有用)。

所有的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方法。

您可以使用来自http://www.json.org/js.html的 json.js 将json数据更改为字符串数据。

您还可以使用Prototype的Object.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具有类似于Firefox的Firebug的开发人员工具Opera具有Opera DragonFly,而Google Chrome浏览器也具有开发者工具(Shift + Ctrl + J)。

这是在IE6-8中调试JavaScript的更详细的答案:
使用IE8“开发人员工具”调试早期的IE版本

我遇到了类似的问题,其原因是我利用Ajax来获取数据。在这种情况下,我进行了两个异步ajax调用。在一个我只是返回字符串味精,并显示在警报。在第二个ajax调用中,我以json格式获取arraylist并在js中对其进行解码。因此,我的第二个请求用于首先处理,并且我收到了对象的警报。

因此,请检查。1.警报应包含字符串。2.如果您获得arrayList或任何其他Object对其进行解码。

祝一切顺利!

本文地址:http://javascript.askforanswer.com/dayinjavascriptduixiangdeneirongzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!