首頁 >web前端 >js教程 >IE8對JS透過屬性和陣列遍歷解析不一樣的地方探討_javascript技巧

IE8對JS透過屬性和陣列遍歷解析不一樣的地方探討_javascript技巧

WBOY
WBOY原創
2016-05-16 17:34:391029瀏覽

以文謹記在此被瀏覽器版本差異的坑。

複製程式碼 程式碼如下:

Array.prototype.Contains = function (str) { 🎜>if (!str)
return false;
for (var i = 0; i if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push(>tmp.push("1");
tmp.push( "2");
tmp.push("3");
alert("遍歷屬性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍歷數組");
for ( var i=0;ialert(tmp[i]);
}

如果是非IE8瀏覽器,例如(IE7、IE9、Chrome、FF,只測試這幾種)
透過屬性和陣列遍歷,其結果是一樣的。
但對於IE8,結果會有一點小小的差異,在IE8下會把原型鏈擴充方法當作一個屬性輸出,大家可以測試一下。

之所以發現這個差異,也是因為解決了一個詭異的bug,有同事在程式碼裡面使用for ( var i in tmp )這種方式來遍歷數組的每個元素,如果正好對Array定義了原型鏈方法,則會發生這個問題。
所以建議:如果遍歷數組元素,還是應該採用標準的寫法 for ( var i=0;i
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn