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

數(shù)組Array進(jìn)行原型prototype擴(kuò)展后帶來(lái)的for in遍歷問(wèn)題

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

一般來(lái)說(shuō)for in是用來(lái)遍歷對(duì)象屬性的,而數(shù)組還是要用for來(lái)遍歷(當(dāng)然數(shù)組也是對(duì)象)。據(jù)了解,for要比f(wàn)or in的遍歷效率高,另外像C#、ActionScript3.0還有foreach循環(huán),這將是效率最高的循環(huán),不過(guò)JavaScript沒(méi)有這種循環(huán)。最科學(xué)的數(shù)組遍歷應(yīng)該像這樣:使用普通的for循環(huán),而且預(yù)存數(shù)組長(zhǎng)度。代碼如下:
復(fù)制代碼 代碼如下:
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技術(shù)數(shù)組Array進(jìn)行原型prototype擴(kuò)展后帶來(lái)的for in遍歷問(wèn)題,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 女人张腿让男人桶免费 | 成片免费观看视频在线网 | 国产在线精彩亚洲久久 | 成人国产在线视频 | 国产AV亚洲精品久久久久软件 | 色情内射少妇兽交 | 有人在线观看的视频吗免费 | 久久伊人天堂视频网 | 国产精品99精品无码视亚 | 日韩一区二区三区四区区区 | 久久免费视频在线观看6 | 最近免费视频中文2019完整版 | 国产成人一区免费观看 | 色欲AV精品人妻一区二区麻豆 | 亚洲高清视频在线观看 | 亚洲娇小性色xxxx | 午夜理伦大片一级 | 4438全国免费观看 | 成人在免费视频手机观看网站 | 绑着男军人的扒开内裤 | 久久综合色一综合色88中文 | 亚洲国产五月综合网 | 精品国产乱码久久久久久人妻 | 少爷被多个暗卫肉高h | 97在线免费观看视频 | 性欧美videofree中文字幕 | 国产99RE在线观看69热 | 国产精品久久久久久亚洲毛片 | 无人区大片中文字幕在线 | 一本道高清码v京东热 | 亚洲精品久久区二区三区蜜桃臀 | 欧美乱码伦视频免费66网 | 在线亚洲黄色 | 日本女人下面毛茸茸 | 国产一区二区无码蜜芽精品 | 国产成人刺激视频在线观看 | 欧美日韩国产码在线 | 国产盗摄一区二区 | 我的年轻漂亮继坶三级 | 99久久亚洲精品日本无码 | 69国产精品人妻无码免费 |