来自PHP世界并且在理解这个JavaScript(jQuery选择)时遇到一些困难

时间:2017-03-22 19:25:59

标签: javascript jquery javascript-objects

有时候我很难理解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)

1 个答案:

答案 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