我正在学习jquery并在chrome js控制台中使用它。
我一直在使用js控制台主要是为了查看js对象,因为它在一个简洁的小选择列表中显示了所有的属性,方法和继承的东西。
也许我在这里误解了一些东西,但是当我在控制台中运行$(document)时它只返回了文档dom对象。我希望我能看到一个带有一堆美味的jquery方法和属性的js对象。我的想法是jquery包装传递给对象中的$()函数的dom元素,控制台会输出该对象供我阅读。
然后我发现控制台使用$()函数来返回对dom对象的引用。是否使用该函数而不是jquery函数?我有一种感觉,我不知道它是如何工作的。
答案 0 :(得分:5)
不,jQuery破坏了控制台的$
功能。请使用$ == jQuery
进行检查。
如果要检查jQuery对象而不是DOM元素,请尝试dir($(document))
。所有有趣的东西都在__proto__
。
默认情况下$(document)只返回一个dom对象,或者控制台是否在javascript对象中看到一个dom对象并将其删除?仍然对控制台和javascript如何协同工作感到困惑。
当$
是jQuery时,$(document)
返回类似于数组的对象,其中length
为1,window.document
为索引0.请注意,此对象不是< em>实际上一个数组,它就像一样一个数组,Chrome就像一个数组一样显示它;在这种情况下,单个“数组元素”显示在两个括号之间。您可能只是没有注意到括号,只看到它们之间的单个元素。
Apparently,任何splice
属性引用Array.prototype.splice
和数字length
属性的对象都是“类似阵列”,Chrome可以将其显示为数组。您可以通过在控制台中键入类似{splice: Array.prototype.splice, 0: 'blah', length: 1}
的内容来测试此项;它将显示为["blah"]
。使用console.dir
来避免这种情况。
答案 1 :(得分:2)
命令行API函数$(selector)
是document.querySelector()
的别名。它只能从控制台访问,如果你试图从文档访问它,它将是未定义的:
<script>alert(typeof $)</script>
但是当你包含jQuery时,jQuery定义的$
函数会遮盖相同名称的命令行API函数。