ES8 中的 Object.values() 方法如何使用及常见问题解决

阅读时长 4 分钟读完

在前端开发中,我们经常需要获取对象中的值,遍历对象并复制该对象的所有属性,或删除对象属性等操作。在 ES8 中,Object.values() 方法提供了一种更加高效和简单的遍历对象属性值的方式,本文将介绍这个方法的使用方法以及常见问题的解决方案。

Object.values() 方法的使用

Object.values() 方法的用法非常简单,其实就是返回对象中所有可枚举属性的值。具体使用方法如下:

对于数组和类数组对象,可以使用.slice()方法将其转换为纯对象,然后再使用Object.values()方法。

在组件中获取props中所有值:

常见问题解决

不支持 Internet Explorer 浏览器

首先,Object.values()方法不支持Internet Explorer浏览器,如果要在IE中使用这个方法,可以使用类似 polyfill 的东西进行兼容,或者使用ES6转ES5的插件功能实现兼容。

Polyfill方式:

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

只能获取可枚举属性值

其次,Object.values()方法只能获取对象中所有可枚举属性的值。如果属性不可枚举或者 Symbol 类型,Object.values()方法将无法获取该属性的值。

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

以上例子中,属性c不可枚举,Symbol类型的属性d也无法获取到其属性值。

数组的索引作为属性值

对于数组来说,数组的索引号将被作为属性值,而不是属性名。

结论

Object.values() 方法是一种极其方便的方法,能快速获取对象的值并对其进行遍历操作,帮助我们更好地处理对象。不过,需要注意该方法只支持现代浏览器并且只能获取可枚举属性的值,同时在操作数组时要注意其索引作为属性值的情况。

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

纠错
反馈