MST

星途 面试题库

面试题:JavaScript类数组对象的兼容性方法封装

假设你要封装一个函数,用于在不同浏览器中安全地将类数组对象转换为数组。该函数需要考虑到IE8及以下等低版本浏览器的兼容性。请写出这个函数的代码实现,并简要说明你处理兼容性的思路。
49.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

代码实现

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;
    }
}

兼容性处理思路

  1. 尝试标准方法:首先尝试使用Array.prototype.slice.call(arrayLike),这是在现代浏览器中将类数组对象转换为数组的标准方法。它利用slice方法会返回一个新数组的特性,对类数组对象进行转换。
  2. 捕获异常处理兼容性:由于IE8及以下浏览器不支持这种方式,会抛出异常。所以使用try - catch块捕获异常。当捕获到异常时,手动遍历类数组对象,将每个元素依次添加到一个新创建的数组中,从而实现类似的转换效果,达到兼容低版本浏览器的目的。