谁/什么决定如何将 an 的内容object
写入console
?
有时你会得到对象字面量的可折叠表示,而有时它只是打印DOM
结构。
鉴于此 HTML:
<div class="container">
<video src="low.mp4"></video>
<video src="high.mp4"></video>
<video src="mega.mp4"></video>
</div>
如果我们点击console
(WebKit/Firebug):
> var firstVideo = document.querySelector('video')
接着:
> firstVideo
它返回:
<video src="low.mp4"></video>
同时,假设我们有另一个对象,例如:
var guitar = { name:'Stratocaster', strings:6 }
向控制台询问:
> guitar
给我们:
我已经多次遇到这种行为,但通常会通过其他方式回避我的好奇心。现在有点痛苦,所以我正在研究它。仅仅是因为有问题的对象是一个DOM
元素,而检查员只是在帮助我们吗?
(我意识到我的示例有点奇怪(比较DOM
对象和文字),但这是说明问题的最简单/最快的方法。)
使用上一个问题中的一些信息,我可以获得有关每个相关对象的更多信息:
video.constructor
返回:
HTMLVideoElementConstructor
而:guitar.constructor
返回:
function Object() {
[native code]
}
为什么这有关系?
像这样的情况:
> firstVideo.parentElement
当我必须单独跟踪每个元素(即firstVideo.parentElement.offsetHeight
)时,我不能简单地查看这个元素并检查它的属性,这真是太糟糕了。
那么,我的理解差距在哪里——到底发生了什么?