欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js將類數(shù)組對象轉(zhuǎn)換成數(shù)組對象

 更新時間:2010年05月06日 21:22:09   作者:  
javascript與dom有許多瑕疵,如著名的類數(shù)組對象Arguments,其他諸如HTMLCollection,NodeList如果它們都是數(shù)組的子類,那多省時啊。
在標準瀏覽器中,好像只要對象存在length屬性,就能把它轉(zhuǎn)換為數(shù)組,但IE就不盡然。

接著我們看看各大類庫的處理:
復(fù)制代碼 代碼如下:

//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方法來設(shè)置與維護長度與索引,而setArray的參數(shù)要求是一個數(shù)組,因此makeArray的地位非常重要。這方法保證就算沒有參數(shù)也要返回一個空數(shù)組。
Prototype.js的$A方法
復(fù)制代碼 代碼如下:

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方法
復(fù)制代碼 代碼如下:

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方法
復(fù)制代碼 代碼如下:

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的設(shè)計比較巧妙,功能也比較強大。它一開始就自動執(zhí)行自身,以后就不用判定瀏覽器了。它還有兩個可選參數(shù),對生成的純數(shù)組進行操作。
最后看dojo的_toArray,dojo的實現(xiàn)總是那么怪異的。 和Ext一樣,后面兩個參數(shù)是可選,只不過第二個是偏移量,最后一個是已有的數(shù)組,用于把新生的新組元素合并過去。
復(fù)制代碼 代碼如下:

(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;
})();

相關(guān)文章

  • javascript和HTML5利用canvas構(gòu)建猜牌游戲?qū)崿F(xiàn)算法

    javascript和HTML5利用canvas構(gòu)建猜牌游戲?qū)崿F(xiàn)算法

    讓我猜猜你心中的牌,先隨機生成27張牌,不能重復(fù)列出三列牌,然后記住其中一張,然后點擊牌所在的列,多次就可以猜出你想的牌,具體實現(xiàn)如下,感興趣的朋友可以參考下哈
    2013-07-07
  • JavaScript中淺講ajax圖文詳解

    JavaScript中淺講ajax圖文詳解

    ajax對于各位來說,應(yīng)該都不陌生,正因為ajax的產(chǎn)生,導(dǎo)致前臺頁面和服務(wù)器之間的數(shù)據(jù)傳輸變得非常容易,同時還可以實現(xiàn)頁面的局部刷新。本文圖文并茂給大家介紹了js中ajax知識,需要的朋友一起學(xué)習(xí)吧
    2016-11-11
  • js prototype深入理解及應(yīng)用實例分析

    js prototype深入理解及應(yīng)用實例分析

    這篇文章主要介紹了js prototype深入理解及應(yīng)用,結(jié)合實例形式分析了JavaScript prototype屬性功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • chatGPT教我寫compose函數(shù)的詳細過程

    chatGPT教我寫compose函數(shù)的詳細過程

    這篇文章主要介紹了chatGPT教我寫compose函數(shù),文中給大家介紹了chatGPT過程概略,本文結(jié)合實例代碼圖文給大家講解的非常詳細,需要的朋友可以參考下
    2023-02-02
  • 微信小程序?qū)崿F(xiàn)文字跑馬燈效果

    微信小程序?qū)崿F(xiàn)文字跑馬燈效果

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)文字跑馬燈效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 求數(shù)組最大最小值方法適用于任何數(shù)組

    求數(shù)組最大最小值方法適用于任何數(shù)組

    之前雖然介紹過一種求數(shù)組最大最小值的方法,但那個方法只是用于數(shù)組中都是數(shù)字的,下面為大家介紹個方法適用于任何數(shù)組,有此需求的朋友可以參考下
    2013-08-08
  • JavaScript簡單實現(xiàn)動態(tài)改變HTML內(nèi)容的方法示例

    JavaScript簡單實現(xiàn)動態(tài)改變HTML內(nèi)容的方法示例

    這篇文章主要介紹了JavaScript簡單實現(xiàn)動態(tài)改變HTML內(nèi)容的方法,結(jié)合實例形式分析了javascript簡單獲取及修改HTML元素的相關(guān)操作技巧,非常簡單易懂,需要的朋友可以參考下
    2018-12-12
  • 關(guān)于javascript中限定時間內(nèi)防止按鈕重復(fù)點擊的思路詳解

    關(guān)于javascript中限定時間內(nèi)防止按鈕重復(fù)點擊的思路詳解

    下面小編就為大家?guī)硪黄P(guān)于javascript中限定時間內(nèi)防止按鈕重復(fù)點擊的思路詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • webpack進階——緩存與獨立打包的用法

    webpack進階——緩存與獨立打包的用法

    本篇文章主要介紹了webpack進階——緩存與獨立打包的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JS循環(huán)遍歷ul中l(wèi)i的點擊事件給選中l(wèi)i添加css樣式(示例代碼)

    JS循環(huán)遍歷ul中l(wèi)i的點擊事件給選中l(wèi)i添加css樣式(示例代碼)

    對于一個ul中固定的li個數(shù),當點擊其中一個li時,改變選中l(wèi)i的顏色;同時改變對應(yīng)的另一個ul中l(wèi)i的顏色,怎么實現(xiàn)這個功能呢,下面小編給大家?guī)砹薺s循環(huán)遍歷ul中l(wèi)i的點擊事件,給給選中l(wèi)i添加css樣式,感興趣的朋友一起看看吧
    2023-07-07

最新評論