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

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

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

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

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

主站蜘蛛池模板: 99久久免费国产精精品 | 成人国产精品日本在线 | 亚洲精品无码一区二区三区四虎 | 欧洲-级毛片内射八十老太婆 | 小玲被公扒开腿 | 欧洲人交xxx69 | 久久免费视频在线观看6 | 丰满的美女射精动态图 | 久久天天婷婷五月俺也去 | 91综合精品网站久久 | AV福利无码亚洲网站麻豆 | 久久精品免费电影 | 亚洲.欧美.中文字幕在线观看 | 久久999视频 | 亚洲精品久久无码AV片银杏 | 日本漫画母亲口工子全彩 | 久久99综合国产精品亚洲首页 | 男女久久久国产一区二区三区 | 日本xxx在线观看免费播放 | 宫交拔不出来了h黑人 | 中国bdsmchinesehd 中俄两军在日本海等上空战略巡航 | 精品在线观看一区 | 欧亚一卡二卡日本一卡二卡 | 97色伦图片97色伦图影院久久 | 国产精品点击进入在线影院高清 | 人人澡人人擦人人免费 | 午夜亚洲WWW湿好爽 午夜亚洲WWW湿好大 | 熟妇少妇任你躁在线无码 | 伊人影院蕉久 | 国产精品日韩欧美一区二区三区 | 国产午夜精品福利久久 | 99久久免费精品国产 | 91嫩草国产在线观看免费 | 久久99国产精品无码AV | 里番※琉璃全彩acg奈亚子 | 毛片内射久久久一区 | 亚洲AV精品无码国产一区 | 蜜桃婷婷狠狠久久综合9色 蜜桃视频一区二区 | 你的欲梦裸身在线播放 | 人人射人人插 | 欧美一级久久久久久久久大 |