Comme mentionné, le code est le suivant :
<ul class="demo">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<script>
var l = document.getElementsByClassName("demo")[0];
var a = l.children;
var r=a.shift();
console.log(r);//报错:a.shift is not a function?
</script>
Les objets de type tableau ne peuvent pas appeler l'API de la méthode shift ?
Le tableau de classes n'est pas un tableau et il n'y a pas d'API associée qui hérite du tableau
.Vous pouvez utiliser call ou apply pour le lier,
Par exemple
ps : shift implique également d'opérer le contenu du tableau. Je viens de l'essayer et j'ai forcé l'utilisation de call pour décaler l'objet tableau. Il signalera que la longueur de l'objet associé ne peut pas être modifiée. Si cela implique également un traitement DOM, il est recommandé d'utiliser les opérations DOM associées, par exemple, removeChild ne sera pas développé. Des informations pertinentes sur les objets de tableau DOM peuvent être trouvées dans mdn, par exemple : https://developer.mozilla.org...
Shift modifiera le tableau d'origine, entraînant la modification de la propriété length, mais length est en lecture seule. Il peut être utilisé des manières suivantes.
Bien sûr, shift est une méthode de tableau. Vous pouvez d'abord convertir le tableau de classe en tableau, puis l'appeler
.Array.prototype.slice.call(arraylike);
console.log(a)
Vous pouvez voir :
__proto__:HTMLCollection
Il n'y a pas de méthode shift dans HTMLCollection.