有时候我很难理解JS对象。我将举一个非常简单的例子。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<script>
var myTestSelection = $('ul li').first();
console.log(myTestSelection); //Returns object
console.log(myTestSelection[0]); //Returns HTML WHY??????????
console.log($(myTestSelection).eq(0));
</script>
当我输出myTestSelection时 - 返回带有key =&gt;的对象; 0和值=&gt;对象
当我输出myTestSelection [0]时 - 返回<li>Item 1</li>
为什么?
我真的无法理解这种行为,这对我很重要。有人能给出合乎逻辑的解释吗?提前感谢大家花时间回答。 (抱歉英语 - 不是mothertongue)
答案 0 :(得分:8)
这是关于jQuery,而不是本机JavaScript。您观察到的现象是jQuery API的设计。
首先,要了解jQuery选择器返回匹配的元素的类似数组的对象。因此:
console.log(myTestSelection);
...返回类似数组的对象。这是阵列式的,因为正如您所发现的那样,它已被编入索引,因此[0]
将返回第一个匹配的元素。这让我想到:
console.log(myTestSelection[0]);
...返回对第一个匹配引用的本机引用。它不会返回HTML - 它只是在你的控制台中显示这种方式,它试图提供帮助并演示元素。它实际上返回对元素的本机引用。
typeof myTestSelection[0] == 'object'; //true - would be 'string' if it was HTML