把JavaScript中的偽數組轉換為真數組

jsopen 9年前發布 | 4K 次閱讀 JavaScript

在 JavaScript 中, 函數中的隱藏變量 arguments 和用 getElementsByTagName 獲得的元素集合(NodeList)都不是真正的數組,不能使用 push 等方法,在有這種需要的時候只能先轉換為真正的數組。

對于 arguments,可以使用 Array.prototype.slice.call(arguments); 來達到轉換的目的,但對于 NodeList 則不行了,其在 IE8 及以下將會報錯,只能說其 JS 引擎有所限制。

因此,如果需要把 NodeList 轉換為真正的數組,則需要做下兼容處理。

function realArray(c) {
    try {
        return Array.prototype.slice.call(c);
    } catch (e) {
        var ret = [], i = 0, len = c.length;
        for (; i < len; i++) {
            ret[i] = (c[i]);
        }
        return ret;
    }
}

 本文由用戶 jsopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!