js中將具有數(shù)字屬性名的對(duì)象轉(zhuǎn)換為數(shù)組
var obj = {};
obj[0] = 1;
obj[1] = 2;
這個(gè)對(duì)象并不是數(shù)組類型,那有沒有辦法把它轉(zhuǎn)換為數(shù)組類型呢?jQuery代碼中采用了Array.prototype.slice把這種對(duì)象轉(zhuǎn)換為數(shù)組,但我試了好幾遍,就是不行:
var obj = {};
obj[0] = 1;
obj[1] = 2;
alert(Array.prototype.slice.call(obj));
上面這段代碼在IE下直接報(bào)錯(cuò),在Firefox下雖然沒有報(bào)錯(cuò),輸出內(nèi)容卻是空。也就說,轉(zhuǎn)換失敗了。這種內(nèi)置方法的問題最好還是查查ECMA-262,slice方法的執(zhí)行流程的前兩步如下:
1. Let A be a new array created as if by the expression new Array().
2. Call the [[Get]] method of this object with argument "length".
這里提到了參數(shù)length。obj對(duì)象雖然有數(shù)字索引,但是卻沒有l(wèi)ength屬性。其實(shí)問題就在這:slice方法不知道這個(gè)對(duì)象的長(zhǎng)度。簡(jiǎn)單修改一下代碼,添加length屬性:
var obj = {};
obj[0] = 1;
obj[1] = 2;
obj.length = 2;
alert(Array.prototype.slice.call(obj));
輸出內(nèi)容是"1,2",復(fù)制成功。那是不是說明,只要調(diào)用slice方法的this有數(shù)字索引和length屬性,就可以轉(zhuǎn)換為數(shù)組呢?。
這個(gè)定律在大部分瀏覽器下成立。然而,在IE環(huán)境下,對(duì)于HtmlCollection這樣的DOM元素集合,即使具有上述特征,它在調(diào)用slice的時(shí)候也會(huì)報(bào)錯(cuò)。
- js將類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組對(duì)象
- js 轉(zhuǎn)json格式的字符串為對(duì)象或數(shù)組(前后臺(tái))的方法
- JS實(shí)現(xiàn)將對(duì)象轉(zhuǎn)化為數(shù)組的方法分析
- js對(duì)象轉(zhuǎn)json數(shù)組的簡(jiǎn)單實(shí)現(xiàn)案例
- JavaScript將數(shù)組轉(zhuǎn)為對(duì)象與JSON對(duì)象字符串轉(zhuǎn)數(shù)組方法詳解
- JavaScript對(duì)象轉(zhuǎn)數(shù)組的3種簡(jiǎn)單方法小結(jié)
相關(guān)文章
EasyUI閃屏EasyUI頁(yè)面加載提示(原理+代碼+效果圖)
這篇文章主要介紹了EasyUI閃屏EasyUI頁(yè)面加載提示(原理+代碼+效果圖)的相關(guān)資料,需要的朋友可以參考下2016-02-02詳解addEventListener的三個(gè)參數(shù)之useCapture
本文主要給大家介紹的是addEventListener的三個(gè)參數(shù)之中的useCapture參數(shù)的使用及示例分享,有需要的小伙伴參考下2015-03-03基于javascript實(shí)現(xiàn)判斷移動(dòng)終端瀏覽器版本信息
這篇文章主要介紹了基于javascript實(shí)現(xiàn)判斷移動(dòng)終端瀏覽器版本信息,需要的朋友可以參考下2014-12-12windows系統(tǒng)下簡(jiǎn)單nodejs安裝及環(huán)境配置
相信對(duì)于很多關(guān)注javascript發(fā)展的同學(xué)來說,nodejs已經(jīng)不是一個(gè)陌生的詞眼,這里不想談太多的nodejs的相關(guān)信息。只說一下,windows系統(tǒng)下簡(jiǎn)單nodejs環(huán)境配置2013-01-01js設(shè)置document.domain實(shí)現(xiàn)跨域的注意點(diǎn)分析
這篇文章主要介紹了js設(shè)置document.domain實(shí)現(xiàn)跨域的注意點(diǎn),較為詳細(xì)的分析了document.domain跨域的相關(guān)技巧,需要的朋友可以參考下2015-05-05llqrcode js識(shí)別二維碼解析二維碼信息實(shí)例
這篇文章主要為大家介紹了llqrcode js識(shí)別二維碼解析二維碼信息實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11