如何检查jQuery对象?

如何检查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

在jQuery 1.4.4中,如果我在Google Chrome的控制台中执行此操作:

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)