JQuery,期望Object.prototype.toString.call($ aDiv)返回" object Array",但" object Object"被退回

时间:2017-11-30 02:27:32

标签: javascript jquery

我是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

enter image description here

当我运行$aDiv时,会返回一个包含一个元素的数组(我认为返回一个数组,因为它被方括号包围)。但是,当我运行Object.prototype.toString.call($aDiv)时,我希望返回object Array,但实际返回的是object Object

我错过了什么吗?或者我的理解有些不正确?

2 个答案:

答案 0 :(得分:2)

jQuery对象是类似数组的对象,而不是数组。像object这样的数组是任何具有length属性并且具有0length - 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