【发布时间】:2012-11-04 17:13:57
【问题描述】:
Chrome 24 提供了一种在console.log() 中输出对象的新方法。
例如,this jsFiddle example 上的 console.log($("p")); 会输出这种疯狂:
▼[<p>, <p>, <p>, prevObject: jQuery.fn.jQuery.init[1], context: #document, selector: "p"]
► 0: <p>
► 1: <p>
► 2: <p>
► context: #document
length: 3
► prevObject: jQuery.fn.jQuery.init[1]
selector: "p"
► __proto__: Object[0]
我可以看到它将 DOM 元素的集合放在开头。但是,如果您尝试扩展一个大部分为空的简单的<p> 标签,它会在您身上抛出:
▼ 0: <p>
accessKey: ""
align: ""
► attributes: NamedNodeMap
...
[stopping here for sanity's sake]
那么我该如何使用所有这些信息呢?我的第一直觉是tame it 到它过去的样子,但转念一想,那里确实有很多我可能想要访问的信息。但我很难理解我在看什么。其中大部分看起来像 jQuery 值。这是对象具有(或不具有)的每个 jQuery 值的列表吗?
然后是► context: 和► __proto__: 的整个问题。一旦您开始深入了解__proto__,您将永远不会停止。我认为它会无限下降!
如何开始学习如何使用这个新输出?
编辑: 实际上我刚刚意识到我仍在使用 Chrome 23,这不是 24 中引入的东西。this thread 中的某人说这是 Chrome 24 的问题,但也许它是 23 中的新问题?无论如何,我最近才开始在 jQuery 对象上注意到这一点。
编辑 2:如果您只是在寻找如何记录旧方法,请试试这个:(hat tip)
console.log.apply(console, $("div"));
【问题讨论】:
-
console.log($("p"))对您来说最好的输出是什么?您对 Firebug 样式的输出(例如[p, p#bar, p.foo])或 Opera Dragonfly 的输出(例如Object [+<p>, +<p id="bar">, +<p class="foo">])满意吗?我正在研究similar issue,我想我也可以改进 jQuery 对象的输出。 -
请给code.google.com/p/chromium/issues/detail?id=162570加注星标
-
@NVI 感谢您提供该链接。我习惯的是一个直接的 DOM 输出,就像以前一样。例如。一个 jQuery 对象将输出每个匹配的 HTML 元素的列表,并且每个元素都可以展开以查看节点中存在的所有 HTML——这意味着如果一个元素在标签中物理上具有
id=hey,那么它会出现,但如果没有,我不会得到id: ""以及实际上不存在的所有其他理论上可能的属性。但这只是我习惯并发现非常有用的方法。我仍然希望能够做到这一点,但我也希望学习如何使用它。
标签: google-chrome console google-chrome-devtools developer-tools