最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js中將具有數(shù)字屬性名的對象轉(zhuǎn)換為數(shù)組

 更新時間:2011年03月06日 00:01:00   作者:  
js中將具有數(shù)字屬性名的對象轉(zhuǎn)換為數(shù)組,雖然不太常用,但我們的確可以給對象添加以數(shù)字為屬性名的屬性
雖然不太常用,但我們的確可以給對象添加以數(shù)字為屬性名的屬性:
復(fù)制代碼 代碼如下:

var obj = {};
obj[0] = 1;
obj[1] = 2;

這個對象并不是數(shù)組類型,那有沒有辦法把它轉(zhuǎn)換為數(shù)組類型呢?jQuery代碼中采用了Array.prototype.slice把這種對象轉(zhuǎn)換為數(shù)組,但我試了好幾遍,就是不行:
復(fù)制代碼 代碼如下:

var obj = {};
obj[0] = 1;
obj[1] = 2;
alert(Array.prototype.slice.call(obj));

上面這段代碼在IE下直接報錯,在Firefox下雖然沒有報錯,輸出內(nèi)容卻是空。也就說,轉(zhuǎn)換失敗了。這種內(nèi)置方法的問題最好還是查查ECMA-262,slice方法的執(zhí)行流程的前兩步如下:
復(fù)制代碼 代碼如下:

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對象雖然有數(shù)字索引,但是卻沒有l(wèi)ength屬性。其實(shí)問題就在這:slice方法不知道這個對象的長度。簡單修改一下代碼,添加length屬性:
復(fù)制代碼 代碼如下:

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ù)組呢?。

這個定律在大部分瀏覽器下成立。然而,在IE環(huán)境下,對于HtmlCollection這樣的DOM元素集合,即使具有上述特征,它在調(diào)用slice的時候也會報錯。

相關(guān)文章

最新評論

尖扎县| 渑池县| 文登市| 三台县| 油尖旺区| 祁阳县| 玉林市| 黑河市| 寻乌县| 吉首市| 鞍山市| 平邑县| 金溪县| 普安县| 新巴尔虎右旗| 济宁市| 阆中市| 安徽省| 大英县| 邵东县| 鸡西市| 鹤壁市| 内黄县| 萨迦县| 建始县| 高密市| 南京市| 军事| 武山县| 景泰县| 武夷山市| 苏尼特右旗| 娱乐| 合山市| 高雄市| 高邮市| 青神县| 前郭尔| 丹寨县| 鹤壁市| 云浮市|