如何检查jQuery对象?
在jQuery 1.4.4中,如果我在Google Chrome的控制台中执行此操作:如何检查jQuery对象?,jquery,internals,Jquery,Internals,在jQuery 1.4.4中,如果我在Google Chrome的控制台中执行此操作: var divs = $('div'); 。。。我得到的似乎是一个DOM元素数组。但我知道它一定是一个jQuery对象,因为我可以在上面链接jQuery方法: divs.hide('slow').show('slow'); // etc 我想看到的是jQuery对象,它有一个.fn属性,列出了它的所有方法,等等。我很确定我以前能够看到这一点 如果我做我自己的东西,像这样: var foo = {speci
var divs = $('div');
。。。我得到的似乎是一个DOM元素数组。但我知道它一定是一个jQuery对象,因为我可以在上面链接jQuery方法:
divs.hide('slow').show('slow'); // etc
我想看到的是jQuery对象,它有一个.fn
属性,列出了它的所有方法,等等。我很确定我以前能够看到这一点
如果我做我自己的东西,像这样:
var foo = {species: 'marmot', flavor: 'lemon'}
…我可以在控制台中深入了解它的属性
如何在控制台中检查jQuery对象?
还有,是什么魔法使它看起来像一个数组
更新-它确实改变了
如果我加载了jQuery的旧版本,例如,将其复制并粘贴到控制台的空白选项卡中:
。。。然后我会这样做:
var divs = $('div');
。。。我确实得到了jQuery.fn.jQuery.init
,我可以在控制台中深入研究它。因此,从那时起,情况肯定发生了变化。我相信详细描述了您要查找的内容,但要总结一下(从链接):
关于jQuery的有趣之处
对象的数据类型为
一个对象,它具有类似数组的属性
特点:
- 它的属性名(至少是指DOM元素的属性名)是
数字的 - 它具有长度属性
$('div').toSource()代码>编辑:仅适用于FF
应该是显示对象属性所需的
对于铬:
基本上,您可以在Chrome中访问Javascript控制台。单击脚本选项卡(#1)。在要检查代码的位置放置断点(#2)。然后运行脚本,当脚本在该点中断时,检查范围变量(#3)。特别是\uuuu proto\uuuu
部分。这并不能以非常令人满意的方式回答您的问题,但它可能会帮助您,具体取决于您的目标:
我注意到,如果您使对象不太像“数组”,那么Chrome会像记录非数组对象一样记录它(即使用可扩展的属性树)
使其不象数组的一种方法是为length
属性指定一个非数值:
var divs = $('div');
divs.length = "foo";
console.log(divs);
p、 在再次使用之前,您可能希望将对象的长度设置回其原始值。我曾在线发现此检查功能,但从未回头。但它不是jQuery:/
function inspect(obj, maxLevels, level)
{
var str = '', type, msg;
// Start Input Validations
// Don't touch, we start iterating at level zero
if(level == null) level = 0;
// At least you want to show the first level
if(maxLevels == null) maxLevels = 1;
if(maxLevels < 1)
return '<font color="red">Error: Levels number must be > 0</font>';
// We start with a non null object
if(obj == null)
return '<font color="red">Error: Object <b>NULL</b></font>';
// End Input Validations
// Each Iteration must be indented
str += '<ul>';
// Start iterations for all objects in obj
for(var property in obj)
{
try
{
// Show "property" and "type property"
type = typeof(obj[property]);
str += '<li>(' + type + ') ' + property +
( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';
// We keep iterating if this property is an Object, non null
// and we are inside the required number of levels
if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
str += inspect(obj[property], maxLevels, level+1);
}
catch(err)
{
// Are there some properties in obj we can't access? Print it red.
if(typeof(err) == 'string') msg = err;
else if(err.message) msg = err.message;
else if(err.description) msg = err.description;
else msg = 'Unknown';
str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
}
}
// Close indent
str += '</ul>';
return str;
}
我得到TypeError:Object#没有方法“toSource”
toSource
在浏览器中不是通用的这篇文章也是从2008年开始的,在api.jquery.com上搜索toSource
找不到任何东西。在Firebug中,toSource()给了我类似的东西:({selector:“div”,context:({})、0:({})、1:({})、2:({})、3:({})、4:{}),5:({})、6:({})、7:({})、8:({})、9:({})、10:({})、11:({})、12:({})、13:({})、14:({})、15:({})、16:({})、17:({})、长度:18})
。还不完全是我要找的-.fn
酒店在哪里?@Nathan Long:看看,我想那可能就是你要找的。基本上,您可以在Chrome中访问Javascript控制台。单击脚本选项卡(#1)。在要检查代码的位置放置断点(#2)。然后运行脚本,当脚本在该点中断时,检查范围变量(#3)。有趣且令人困惑。:)我已经为Chrome编辑了我的答案。你有机会看看它是否有效吗?不是通用的,但功能相当强大:你可以使用console.dir(这里是Object_)使用Firebug控制台检查/浏览任何对象
或通过debuggerMinor对象,但应该是:for(obj中的var属性)
Thnx我添加了它。不过我觉得没关系。这是一个范围问题,我认为在全局变量空间中使用它是可以的。这是一个非常有趣的话题。
console.dir(String)
// or
obj = {'this' : 'that', 'one' : [2,3,4,5], 'A' : {} }; console.dir(obj)