Tim*_*mwi 5 javascript jquery object
注意:我将在此处使用特定对象作为示例,但请不要发布特定于此示例的答案; 问题更为笼统.
我写了一些像这样的jQuery代码......
$('#some_button').click(function(event) {
$.post('<some URL>', { <some parameters> },
function() { <do something on success> })
.error(function(x) {
// What is x?
});
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
现在,出于这个问题的目的,我们假设没有关于x传入的对象的文档.
一个显而易见的事情可能是
alert(x);
Run Code Online (Sandbox Code Playgroud)
但所有输出的都是[object Object].
找出未知对象具有哪些属性/方法可能是一种简单的方法?我正在考虑在调试阶段我刚刚写的东西,当然没有生产代码.
您可以假设jQuery可用.
我完全知道for (...),但肯定这并不意味着没有更好/更简单的方法 - 我认为jQuery可能有内置的东西......
基本功能如下所示:
var s = "";
for(var p in obj)
{
s += p + " = " + obj[p] + "\n";
}
alert(s);
Run Code Online (Sandbox Code Playgroud)
它将枚举对象的所有属性.如果此特定对象具有深层对象树,则最好将其放入函数中,然后在子对象上调用它.使用相同的技术枚举内部子对象.数组是一个类似的问题.
但我想你将能够从这个起始示例代码中提供这种功能.
如果您在浏览器中打开了开发控制台(在Firefox中可能是Firebug),那么您可以轻松地调用它:
console.log(obj);
Run Code Online (Sandbox Code Playgroud)
但是IE存在一个问题,因为当谈到复杂的对象时,只是显示{...}并不是真的有用.因此,此方法只能用于Chrome和Firefox + Firebug.
这是一个小而简单的插件,我想要枚举一个任意对象并在浏览器的控制台中显示它的内容:
$.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());
}
});
Run Code Online (Sandbox Code Playgroud)
此代码适用于任何浏览器(我实际上需要它用于IE,因为前面提到的{...}显示问题.
如果您的浏览器控制台已打开,它会将对象图解析为控制台.在IE和Chrome中,它是内置的开发控制台,在Firefox中是Firebug控制台.
您可以将其用作:
$.inspect(yourObject);
Run Code Online (Sandbox Code Playgroud)
要么
$.inspect(yourObject, "person");
Run Code Online (Sandbox Code Playgroud)
第二个可选参数用于在显示对象时为其指定名称.如果您未提供名称,则将其设置为"this".您的对象将显示为:
this.name = "John"
this.lastname = "Doe"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |