面试题答案
一键面试代码实现
function safeToArr(arrayLike) {
try {
return Array.prototype.slice.call(arrayLike);
} catch (e) {
var arr = [];
for (var i = 0, len = arrayLike.length; i < len; i++) {
arr.push(arrayLike[i]);
}
return arr;
}
}
兼容性处理思路
- 尝试标准方法:首先尝试使用
Array.prototype.slice.call(arrayLike)
,这是在现代浏览器中将类数组对象转换为数组的标准方法。它利用slice
方法会返回一个新数组的特性,对类数组对象进行转换。 - 捕获异常处理兼容性:由于IE8及以下浏览器不支持这种方式,会抛出异常。所以使用
try - catch
块捕获异常。当捕获到异常时,手动遍历类数组对象,将每个元素依次添加到一个新创建的数组中,从而实现类似的转换效果,达到兼容低版本浏览器的目的。