如何看待JavaScript中的对象以找出它是什么?

前端之家收集整理的这篇文章主要介绍了如何看待JavaScript中的对象以找出它是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

注意:我将在此处使用特定对象作为示例,但请不要发布特定于此示例的答案;问题更为笼统.@H_404_2@

具体的例子@H_404_2@

我写了一些像这样的jQuery代码……@H_404_2@

@H_404_2@

$('#some_button').click(function(event) {
    $.post('

现在,出于这个问题的目的,我们假设没有关于传入的对象x的文档.@H_404_2@

一个显而易见的事情可能是@H_404_2@

@H_404_2@

alert(x);

但是所有输出的都是[object Object].@H_404_2@

一般问题@H_404_2@

找出未知对象具有哪些属性/方法可能是一种简单的方法?我正在考虑在调试阶段我刚刚写的东西,当然没有生产代码.@H_404_2@

您可以假设jQuery可用.@H_404_2@

编辑:@H_404_2@

我完全了解(…),但肯定这并不意味着没有更好/更简单的方法 – 我认为jQuery可能有内置的东西……@H_404_2@

最佳答案
一般和单级基本的JavaScript解决方案@H_404_2@

基本功能如下所示:@H_404_2@

@H_404_2@

var s = "";
for(var p in obj)
{
    s += p + " = " + obj[p] + "\n";
}
alert(s);

对象图问题@H_404_2@

它将枚举对象的所有属性.如果此特定对象具有深层对象树,则最好将其放入函数中,然后在子对象上调用它.使用相同的技术枚举内部子对象.数组是一个类似的问题.@H_404_2@

但我想你将能够从这个起始示例代码中提供这种功能.@H_404_2@

Browser console解决方案@H_404_2@

如果您在浏览器中打开了开发控制台(在Firefox中可能是Firebug),那么您可以轻松地调用它:@H_404_2@

@H_404_2@

console.log(obj);

但是IE存在一个问题,因为当谈到一个复杂的对象时,只显示{…}并不是真的有用.因此,此方法只能用于Chrome和Firefox Firebug.@H_404_2@

适用于任何浏览器的jQuery插件@H_404_2@

这是一个小而简单的插件,我想要枚举一个任意对象并在浏览器的控制台中显示它的内容:@H_404_2@

@H_404_2@

$.extend({
    inspect: function(obj,n){
        n = n || "this";
        if ($.isArray(obj)) {
            for (var x = 0; x < obj.length; x++) {
                $.inspect(obj[x],n + "[" + x + "]");
            }
            return;
        }
        if ($.isPlainObject(‌​obj)) {
            for (var p in obj){
                $.inspect(obj[p],n + "." + p);
            }
            return;
        }
        console.log(n + " = " + obj.toString());
    }
});

代码适用于任何浏览器(我实际上需要它用于IE,因为前面提到的{…}显示问题.@H_404_2@

如果您的浏览器控制台已打开,它会将对象图解析为控制台.在IE和Chrome中,它是内置的开发控制台,在Firefox中是Firebug控制台.@H_404_2@

您可以将其用作:@H_404_2@

@H_404_2@

$.inspect(yourObject);

要么@H_404_2@

@H_404_2@

$.inspect(yourObject,"person");

第二个可选参数用于在显示对象时为其指定名称.如果您不提供名称,则将其设置为“this”.您的对象将显示为:@H_404_2@

@H_404_2@

this.name = "John"
this.lastname = "Doe"

猜你在找的jQuery相关文章