天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

數組Array進行原型prototype擴展后帶來的for in遍歷問題

通常在JavaScript中用for與for in遍歷數組結果是沒有什么區別的,它的循環變量i都是從0開始的數組索引(for in如果遍歷的是非數組對象的屬性集合,則這個i就是屬性名,或稱之為key)。另外要注意一點是:用for in遍歷數組,循環變量i是字符串類型的。如果對Array進行原型擴展后,再用for in來對數組進行遍歷時就要注意些問題了。
測試代碼:
復制代碼 代碼如下:
Array.prototype.max = function()
{
return Math.max.apply({}, this);
};
var company = ['Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN'];
alert(company.length); //這里輸出的長度是8,與上面定義的數組長度一致
//下面循環了9次,在IE6、IE7第一次循環時i值不是0而是上面原型擴展的方法名max,而在IE8、FF瀏覽器最后一次循環時i值才為max
for (var i in company)
{
alert('index is:'+i+'/nvalue is:'+company[i]);
}
//此時,你若僅想打印上面8個公司列表,用for in循環是不行了,即使你非要這樣做,也要在循環內部做點判斷,比如像下面這樣:
for (var i in company)
{
if (!isNaN(i))
alert('index is:'+i+'/nvalue is:'+company[i]);
}
//當然,為了安全起見,也不要那么懶,就寫成普通的for循環才是最科學的,像下面這樣:
for (var i=0; i< company.length; i++)
{
alert('index is:'+i+'/nvalue is:'+company[i]);
}
//這種對數組原型擴展屬性帶來的循環問題通常是導致你得不到預期的結果,但不注意也可能給你代碼帶來難以發現的問題,看看下面的例子:
var userInfo = [["Tom",21,"020-12345678"],["Mike",23,"020-87654321"]]; //顯然這里是數組嵌套
for (var i in userInfo)
{
//此時通過userInfo[i][0]可能根本得不到你預想的值,比如在這個循環中,你將看到有一次值為undefined的結果,這是因為當i值為max時,userInfo[i]是一個function而不是像這樣的子數組 ["Tom",21,"020-12345678"]
alert('Name:' + userInfo[i][0] + '/nAge:' + userInfo[i][1] + '/nPhone:' + userInfo[i][2]);
}

一般來說for in是用來遍歷對象屬性的,而數組還是要用for來遍歷(當然數組也是對象)。據了解,for要比for in的遍歷效率高,另外像C#、ActionScript3.0還有foreach循環,這將是效率最高的循環,不過JavaScript沒有這種循環。最科學的數組遍歷應該像這樣:使用普通的for循環,而且預存數組長度。代碼如下:
復制代碼 代碼如下:
var company = ['Adobe', 'Apple', 'Google', 'Intel', 'Microsoft', 'Oracle', 'IBM', 'SUN'];
for (var i = 0, companyNum = company.length; i < companyNum; i++)
{
alert('index is:' + i + '/nvalue is:' + company[i]);
}

作者:WebFlash
出處:http://webflash.cnblogs.com

JavaScript技術數組Array進行原型prototype擴展后帶來的for in遍歷問題,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 68日本xxxxxxxx79| 国产亚洲人成网站在线观看播放 | 成都电影免费中文高清 | 特级淫片大乳女子高清视频 | 国产亚洲视频精彩在线播放 | 香港论理午夜电影网 | 亚洲欧美综合在线中文 | 超碰国产亚洲人人 | 久久精品国产eeuss | 午夜人妻理论片天堂影院 | 国产嫩草在线观看 | 天美传媒果冻传媒入口视频 | 色噜噜噜亚洲男人的天堂 | AV无码九九久久 | 伊人久久影院大香线蕉 | 91桃色污无限免费看 | 久久精品综合网中文字幕 | 天堂tv免费tv在线tv香蕉 | 亚洲爱视频 | 18和谐综合色区 | 美女胸禁止18以下看 | 国产成人精品免费视频大全办公室 | 色窝窝亚洲AV在线观看 | 野花视频在线观看免费最新动漫 | 日本高清在线一区二区三区 | 秀婷程仪公欲息肉婷在线观看 | 女教师二十三岁 | 国产精品国产三级国产AV麻豆 | 国产网红主播精品福利大秀专区 | 和搜子的日子 在线观看 | 色www永久免费 | 熟女少妇内射日韩亚洲 | 视频区 国产 欧美 日韩 | 成人伊人青草久久综合网 | 国内精品乱码卡一卡2卡三卡 | 一线高清视频在线播放 | 琪琪色在线播放 | 夜夜澡人人爽人人喊_欧美 夜夜骑夜夜欢 | 欧美日韩888在线观看 | 果冻传媒在线观看高清完整免费 | 精品亚洲永久免费精品 |