我是jquery的新手,目前正在学习如何使用jquery创建新的html元素。
我想出了以下代码
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript" src="../jquery-3.2.1.js"></script>
<script type="text/javascript">
var $aDiv = jQuery('<div>hello</div>');
</script>
</body>
</html>
我在Chrome控制台中使用新创建的div
。
当我运行$aDiv
时,会返回一个包含一个元素的数组(我认为返回一个数组,因为它被方括号包围)。但是,当我运行Object.prototype.toString.call($aDiv)
时,我希望返回object Array
,但实际返回的是object Object
。
我错过了什么吗?或者我的理解有些不正确?
答案 0 :(得分:2)
jQuery对象是类似数组的对象,而不是数组。像object这样的数组是任何具有length
属性并且具有0
到length - 1
属性(但不是必需)的对象。
在您发布的控制台日志的图像中,您可以清楚地看到jQuery对象的__proto__
属性实际上是Object
而不是Array
。
控制台倾向于(尽管不总是)以与数组相同的方式记录类似数组的对象,因为在大多数情况下这些对象的使用方式与数组完全相同。其他值得注意的对象以数组的形式出现,即使它们不是:
HTMLCollection
s:尝试console.log(document.getElementsByTagName("div"));
。NodeList
s:尝试console.log(document.querySelectorAll("div"));
。类似数组的对象示例:
以下对象:
{
0: "Hello, world!",
length: 1
}
是一个类似数组的对象。
答案 1 :(得分:1)
jQuery返回一个类似数组的对象,但它不是一个数组。 Notice in the documentation它会返回jQuery
。