如何解决 ES9 中 Object.values() 的兼容性问题

阅读时长 3 分钟读完

ES9(也就是 ECMAScript 2018)引入了许多新的特性,其中一个非常有用的方法是 Object.values(),它可以返回对象的所有属性值组成的数组。但是,这个方法并不是所有浏览器都支持的,因此在写跨浏览器的代码时需要考虑到这个兼容性问题。本文将介绍如何解决 ES9 中 Object.values() 的兼容性问题。

解决方案

为了解决 ES9 中 Object.values() 的兼容性问题,我们需要先检测当前的环境是否支持这个方法。如果不支持,我们需要手动实现一个类似的函数。下面是一个基于 polyfill 的实现:

-- -------------------- ---- -------
-- ---------------- -
    ------------- - ------------- -
        -- ---- --- ------------ -
            ----- --- ------------------------ ------ -- - -------------
        -

        --- ---- - ---
        --- ---- --- -- ---- -
            -- ------------------------------------------ ----- -
                --------------------
            -
        -
        ------ -----
    -
-

这个实现检测了是否已经定义了 Object.values(),如果没有就定义一个新的函数。这个函数首先检查传入的对象是否是一个对象,如果不是就抛出一个类型错误。然后遍历对象的属性,将属性的值添加到一个数组中,最后返回这个数组。

示例代码

下面是一个使用 Object.values() 的示例代码:

如果运行上面的代码在浏览器控制台中输出了 [1, 2, 3],那么你的浏览器已经支持了 ES9 中的 Object.values() 方法。如果输出 undefined,说明你需要使用 polyfill 来实现这个方法。

总结

ES9 中引入了 Object.values() 方法来方便地获取对象的属性值组成的数组。但是,由于这个方法并不是所有浏览器都支持的,我们需要使用 polyfill 来实现这个方法。虽然这个问题看起来很小,但是在编写跨浏览器的代码时必须要考虑到,这可以提高你代码的稳定性和可用性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645a273f968c7c53b0c49b5b

纠错
反馈