IE8對JS陣列,採用屬性遍歷的解析差異

2022-02-04 14:31:04 字數 602 閱讀 2802

ie8對js的陣列,採用屬性遍歷的方法,解析不一樣的地方:

有如下的**

array.prototype.contains = function (str)

}return

false;

}var tmp = new array();

tmp.push("1");

tmp.push("2");

tmp.push("3");

alert("遍歷屬性");

for ( var i in tmp )

alert("遍歷陣列");

for ( var i=0;i如果是非ie8瀏覽器,例如(ie7、ie9、chrome、ff,僅測試這幾種)

通過屬性和陣列遍歷,其結果是一樣的。

但對於ie8,結果會有一點小小的差異,在ie8下會把原型鏈擴充套件方法當做乙個屬性輸出,大家可以測試一下。

之所以發現這個差異,也是因為解決了乙個詭異的bug,有同事在**裡面使用for ( var i in tmp )這種方式來遍歷陣列的每個元素,如果正好對array定義了原型鏈方法,則會發生這個問題。

所以建議:如果遍歷陣列元素,還是應該採用標準的寫法 for ( var i=0;i

ie8下修改input的type屬性報錯

現在有乙個需求如圖所示,當使用者勾選顯示明文核取方塊時,要以明文顯示使用者輸入的密碼,去掉勾選時要變回密文,剛開始想到的就是修改輸入框的type來決定顯示明文還是密文,使用jquery的attr來做試驗,測試結果是chrome,firefox,ie9 都是好的,在ie8以下就會報錯,查詢了下原因,i...

IE8的 JS 引擎如此不堪(二) 解決方案

3 改用彈窗,使用showmodaldialog來顯示,在chrome下,彈窗行為與ie不一樣,而且還會被攔截 無法用統一的方案來解決,最後決定使用混合方案,如果是ie,且為10以下版本,採用彈窗,如果是其他瀏覽器,採用原有彈出層的方案。因此這樣就簡單了 js a.image click funct...

對Vue為什麼不支援IE8的解釋之一

在j ascript物件中有乙個object.defineproperties obj,props 方法 該方法主要用來給指定物件新增自定義屬性 可以接收兩個引數 第乙個引數 要定義或者修改屬性的物件 props引數 要定義其可列舉屬性或修改的屬性描述符的物件。物件中存在的屬性描述符主要有兩種 資料...