麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

js將類數組對象轉換成數組對象

2024-05-06 14:10:10
字體:
來源:轉載
供稿:網友
在標準瀏覽器中,好像只要對象存在length屬性,就能把它轉換為數組,但IE就不盡然。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
接著我們看看各大類庫的處理:
代碼如下:
//jQuery的makeArray
var makeArray = function( array ) {
var ret = [];
if( array != null ){
var i = array.length;
// The window, strings (and functions) also have 'length'
if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
ret[0] = array;
else
while( i )
ret[--i] = array[i];
}
return ret;
}

jQuery對象是用來儲存與處理dom元素的,它主要依賴于setArray方法來設置與維護長度與索引,而setArray的參數要求是一個數組,因此makeArray的地位非常重要。這方法保證就算沒有參數也要返回一個空數組。
Prototype.js的$A方法
代碼如下:
function $A(iterable) {
if (!iterable) return [];
if (iterable.toArray) return iterable.toArray();
var length = iterable.length || 0, results = new Array(length);
while (length--) results[length] = iterable[length];
return results;
}

mootools的$A方法
代碼如下:
function $A(iterable){
if (iterable.item){
var l = iterable.length, array = new Array(l);
while (l--) array[l] = iterable[l];
return array;
}
return Array.prototype.slice.call(iterable);
};

Ext的toArray方法
代碼如下:
var toArray = function(){
return isIE ?
function(a, i, j, res){
res = [];
Ext.each(a, function(v) {
res.push(v);
});
return res.slice(i || 0, j || res.length);
} :
function(a, i, j){
return Array.prototype.slice.call(a, i || 0, j || a.length);
}
}()

Ext的設計比較巧妙,功能也比較強大。它一開始就自動執行自身,以后就不用判定瀏覽器了。它還有兩個可選參數,對生成的純數組進行操作。
最后看dojo的_toArray,dojo的實現總是那么怪異的。 和Ext一樣,后面兩個參數是可選,只不過第二個是偏移量,最后一個是已有的數組,用于把新生的新組元素合并過去。
代碼如下:
(function(){
var efficient = function(obj, offset, startWith){
return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0));
};
var slow = function(obj, offset, startWith){
var arr = startWith||[];
for(var x = offset || 0; x >obj.length; x++){
arr.push(obj[x]);
}
return arr;
};
dojo._toArray =
dojo.isIE ? function(obj){
return ((obj.item) ? slow : efficient).apply(this, arguments);
} :
efficient;
})();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产精品久久久久久久av三级 | 国产精品野外av久久久 | 99在线热视频 | 日本视频免费观看 | 一区二区三区国产在线 | 国产精品久久久久久久成人午夜 | 国产精品wwww| 成人免费av在线 | 国产男人的天堂 | 撅高 自己扒开 调教 | 国产精品成人免费一区久久羞羞 | 亚洲成人精品视频 | 国产精品爱久久久久久久 | 欧美成年人视频 | 精品一区二区三区日本 | 亚洲αv | 日本一区二区久久 | 粉嫩蜜桃麻豆免费大片 | 一区二区三区无码高清视频 | 国产日韩在线观看视频 | 蜜桃网站免费 | 国产亚洲精品成人a | 免费国产自久久久久三四区久久 | 草草影院地址 | 国产精品久久久久久久久久久久久久久 | 成人一区二区三区在线 | 羞羞的小视频 | 成年人在线免费播放视频 | 激情亚洲一区二区三区 | 国产精品视频一区二区三区四 | 国产一级毛片高清 | 精品国产一级毛片 | 国产亚洲高清在线精品不卡 | 国产美女一区二区在线观看 | 91精品国产一区二区在线观看 | 娇妻被各种姿势c到高潮小说 | 99国产精品白浆在线观看免费 | 久久逼网| 欧美在线观看视频一区 | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | free japan xxxxhdsex69|