兼容問題:在IE6~8中,不支持借用數組的slice實現將元素集合類數組對象轉換爲數組的方法,一樣,節點集合也是不支持的,可是arguments則沒有關於瀏覽器的兼容問題。數組
在標準瀏覽器中(谷歌,火狐,IE9及以上):瀏覽器
Array.prototype.slice.call(類數組)prototype
非標準瀏覽器下(IE6,7,8):code
使用循環的方式,對象
for(var i=0; i<類數組.length;i++){io
ary[ary.length] = 類數組[i]console
}function
2:瀏覽器的異常信息捕獲:循環
在JS中使用try,catch進行瀏覽器的異常信息捕獲引用
try{
console.log(num) //正常進行的話會報錯,num is not defind,可是放在try,catch中會,若是try中的代碼出錯了,則執行catch中的代碼
}catch (e.message){ //形參必需要寫,通常叫作爲e
console,log(e.message) // 📱當前代碼報錯的緣由
console.log('ok')
};
正常中項目中都會使用下面的格式
try{
//<js code>
}catch(e){
//若是代碼報錯執行catch中的代碼
}finally{
//通常不用,無論try中的代碼會不會報錯,都會執行這裏面的代碼
}
//但有時候既想捕獲到錯誤的信息,又想不讓下面的代碼執行
try{
console.log(num)
}catch (e.message){ //形參必需要寫,通常叫作爲e
//手動拋出一條錯誤信息,終止代碼執行
throw new Error('錯誤信息')
};
//常見錯誤類型
new ReferenceError:引用錯誤
new TypeError:類型錯誤
new RangeError:範圍錯誤
//書寫一個完整的類數組轉爲數組的方法
var utils = {
listToArray : function(likeAry){
var ary = [];
try{
ary=Array.prototype.slice.call(likeAry)
}cacth(){
for(var i=0; i<likeAry.length;i++){
ary[ary.length] = likeAry[i]
}
}
}
}