如題,程式碼如下:
<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>
類別數組物件不能呼叫shift方法api?
類別數組不是數組,沒有繼承數組的相關api,
可以用call或apply來綁定this,
例如
ps: shift還涉及到操作數組的內容,剛試了一下,強行用call來shift類數組對象,會報相關對像不能修改length的限定,如果還涉及dom的處理,建議還是用相關dom操作,例如removeChild啥的,這個就不擴展了。 dom類別數組物件的相關資料可以在mdn找到,例如:https://developer.mozilla.org...
shift會修改原數組,導致length屬性改變,但是length是唯讀的。透過下面方式可以使用。
當然,shift是數組的方法,可以先把類別數組轉成數組再呼叫
Array.prototype.slice.call(arraylike);
console.log(a)
可以看到:
__proto__:HTMLCollection
HTMLCollection中並沒有shift方法。