兼容问题:在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]
}
}
}
}