谁或什么决定如何将一个对象
的内容写入控制台
?
有时您会得到一个可折叠的对象文字表示,而其他时候它只是打印DOM
结构。
考虑以下HTML:
<div class="container">
<video src="low.mp4"></video>
<video src="high.mp4"></video>
<video src="mega.mp4"></video>
</div>
如果我们在
控制台
(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
),就不能像简单地查看此元素并检查其属性那样操作,这真是令人沮丧。
那么,我的理解上哪里出了问题--实际上发生了什么?