IE8對(duì)JS通過(guò)屬性和數(shù)組遍歷解析不一樣的地方探討
更新時(shí)間:2013年05月06日 18:07:44 作者:
如果是非IE8瀏覽器例如(IE7、IE9、Chrome、FF,僅測(cè)試這幾種)通過(guò)屬性和數(shù)組遍歷,其結(jié)果是一樣的,但對(duì)于IE8,結(jié)果會(huì)有一點(diǎn)小小的差異,在IE8下會(huì)把原型鏈擴(kuò)展方法當(dāng)做一個(gè)屬性輸出,大家可以測(cè)試一下
以文謹(jǐn)記在此被瀏覽器版本差異的坑。
Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍歷屬性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍歷數(shù)組");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}
如果是非IE8瀏覽器,例如(IE7、IE9、Chrome、FF,僅測(cè)試這幾種)
通過(guò)屬性和數(shù)組遍歷,其結(jié)果是一樣的。
但對(duì)于IE8,結(jié)果會(huì)有一點(diǎn)小小的差異,在IE8下會(huì)把原型鏈擴(kuò)展方法當(dāng)做一個(gè)屬性輸出,大家可以測(cè)試一下。
之所以發(fā)現(xiàn)這個(gè)差異,也是因?yàn)榻鉀Q了一個(gè)詭異的bug,有同事在代碼里面使用for ( var i in tmp )這種方式來(lái)遍歷數(shù)組的每個(gè)元素,如果正好對(duì)Array定義了原型鏈方法,則會(huì)發(fā)生這個(gè)問(wèn)題。
所以建議:如果遍歷數(shù)組元素,還是應(yīng)該采用標(biāo)準(zhǔn)的寫法 for ( var i=0;i<tmp.length;i++ )。
復(fù)制代碼 代碼如下:
Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍歷屬性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍歷數(shù)組");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}
如果是非IE8瀏覽器,例如(IE7、IE9、Chrome、FF,僅測(cè)試這幾種)
通過(guò)屬性和數(shù)組遍歷,其結(jié)果是一樣的。
但對(duì)于IE8,結(jié)果會(huì)有一點(diǎn)小小的差異,在IE8下會(huì)把原型鏈擴(kuò)展方法當(dāng)做一個(gè)屬性輸出,大家可以測(cè)試一下。
之所以發(fā)現(xiàn)這個(gè)差異,也是因?yàn)榻鉀Q了一個(gè)詭異的bug,有同事在代碼里面使用for ( var i in tmp )這種方式來(lái)遍歷數(shù)組的每個(gè)元素,如果正好對(duì)Array定義了原型鏈方法,則會(huì)發(fā)生這個(gè)問(wèn)題。
所以建議:如果遍歷數(shù)組元素,還是應(yīng)該采用標(biāo)準(zhǔn)的寫法 for ( var i=0;i<tmp.length;i++ )。
相關(guān)文章
js不間斷滾動(dòng)的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇js不間斷滾動(dòng)的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
JavaScript實(shí)現(xiàn)簡(jiǎn)易tab欄切換內(nèi)容欄
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易tab欄切換內(nèi)容欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
JavaScript 另類遍歷數(shù)組實(shí)現(xiàn)代碼
JavaScript 另類遍歷數(shù)組實(shí)現(xiàn)代碼,大家可以看下。2009-10-10
JavaScript實(shí)現(xiàn)忘記密碼功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用HTML、CSS和JavaScript實(shí)現(xiàn)一個(gè)完整的忘記密碼功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2024-01-01
js實(shí)現(xiàn)數(shù)據(jù)雙向綁定(訪問(wèn)器監(jiān)聽(tīng))
這篇文章主要為大家詳細(xì)介紹了采用訪問(wèn)器監(jiān)聽(tīng)的方式實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)雙向綁定,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的方法
最近在使用VS Code,發(fā)現(xiàn)了不少使用的小技巧,覺(jué)著有必要給大家分享下,下面這篇文章主要給大家介紹了關(guān)于VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-12-12

