js控制台是否破坏了jquery $()函数?

时间:2013-12-27 21:34:10

标签: javascript jquery

我正在学习jquery并在chrome js控制台中使用它。

我一直在使用js控制台主要是为了查看js对象,因为它在一个简洁的小选择列表中显示了所有的属性,方法和继承的东西。

也许我在这里误解了一些东西,但是当我在控制台中运行$(document)时它只返回了文档dom对象。我希望我能看到一个带有一堆美味的jquery方法和属性的js对象。我的想法是jquery包装传递给对象中的$()函数的dom元素,控制台会输出该对象供我阅读。

然后我发现控制台使用$()函数来返回对dom对象的引用。是否使用该函数而不是jquery函数?我有一种感觉,我不知道它是如何工作的。

2 个答案:

答案 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函数。