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

首頁 > 語言 > JavaScript > 正文

javascript Array數組對象的擴展函數代碼

2024-05-06 14:09:54
字體:
來源:轉載
供稿:網友
今天重點講下 如何給Array對象擴展

1、直接在Array.prototype 上擴展

2、用自己方法對數組對象進行擴展

直接在Array.prototype上擴展,不能直接對dom對象使用(如:document.getElementsByTagName('div')得到的nodeList);

對有潔癖的同學而言 也破了原始生態環境的 : )

先來看下 yui操作數組的一些方法,這里我對源碼簡單剝離并改動了下

代碼如下:
(function(){
var YArray;

YArray = function(o,idx,arraylike){
var t = (arraylike) ? 2 : YArray.test(o),
l, a, start = idx || 0;
if (t) {
try {
return Array.prototype.slice.call(o, start); //借助Array原生方法來把aguments轉換為JS數組
} catch(e) {
a = [];
l = o.length;
for (; start<l; start++) {
a.push(o[start]);
}
return a;
}
} else {
return [o];
}

}

YArray.test = function(o){
var r = 0;
if (o && (typeof o == 'object' ||typeof o == 'function')) {
if (Object.prototype.toString.call(o) === "[object Array]") {
r = 1;
} else {
try {
if (('length' in o) && !o.tagName && !o.alert && !o.apply) {
r = 2;
}
} catch(e) {}
}
}
return r;
}

YArray.each = (Array.prototype.forEach) ? //先檢測瀏覽器是否已支持,若有則調用原生
function (a, f, o) {
Array.prototype.forEach.call(a || [], f, o || Y);
return YArray;
} :
function (a, f, o) {
var l = (a && a.length) || 0, i;
for (i = 0; i < l; i=i+1) {
f.call(o || Y, a[i], i, a);
}
return YArray;
};

YArray.hash = function(k, v) {
var o = {}, l = k.length, vl = v && v.length, i;
for (i=0; i<l; i=i+1) {
if (k[i]) {
o[k[i]] = (vl && vl > i) ? v[i] : true;
}
}

return o;
};

YArray.indexOf = (Array.prototype.indexOf) ?
function(a, val) {
return Array.prototype.indexOf.call(a, val);
} :
function(a, val) {
for (var i=0; i<a.length; i=i+1) {
if (a[i] === val) {
return i;
}
}
return -1; //尋找不到的情況
};

YArray.numericSort = function(a, b) {
return (a - b); //從小到大排序, return (b - a); 從大到小
};


YArray.some = (Array.prototype.some) ?
function (a, f, o) {
return Array.prototype.some.call(a, f, o);
} :
function (a, f, o) {
var l = a.length, i;
for (i=0; i<l; i=i+1) {
if (f.call(o, a[i], i, a)) {
return true;
}
}
return false;
};

})();



借助Array原生方法來把aguments轉換為JS數組的其他方法 (Dom對象不可以,只有遍歷)
代碼如下:
Array.apply(null,arguments);
[].slice.call(arguments,0);
[].splice.call(arguments,0,arguments.length);
[].concat.apply([],arguments);
...


YArray函數不僅可以操作數組對象也對nodeList對象進行了操作
YArray(document.getElementsByTagName("div"));
遍歷dom對象 重新組裝成一個數組 : )
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 成人毛片免费 | 97视频 | 一级电影在线免费观看 | 美国一级黄色毛片 | 午夜精品久久久久久久99热浪潮 | 国产亚洲在 | 国产在线中文 | 黄视频网站免费观看 | 视频在线色 | 精品国产一区二区三区免费 | 日本xxxx色视频在线观看免费, | 一级免费特黄视频 | 激情五月少妇a | 毛片在线免费观看完整版 | 日本在线高清 | 欧美人与牲禽动交精品一区 | 成人宗合网 | 黄色成年在线观看 | 曰韩黄色片 | 日日摸夜夜骑 | 国产在线欧美日韩 | 国产精品久久久久久婷婷天堂 | 免费一级毛片在线播放不收费 | 久久精品欧美视频 | 91精品国产日韩91久久久久久360 | 欧洲精品视频在线观看 | 亚洲视屏 | 国产精品久久久久久久不卡 | 中文字幕免费播放 | 国产午夜精品在线 | 国产免费最爽的乱淫视频a 毛片国产 | 久久久久久久久淑女av国产精品 | 亚洲5区 | 久综合色| 国产精选电影免费在线观看 | 欧美视频在线观看一区 | 日韩激情一区二区三区 | 日本中文一级片 | 久久久久久久免费精品 | av在线免费观看播放 | 久久这 |