在前端开发中,我们经常需要获取对象中的值,遍历对象并复制该对象的所有属性,或删除对象属性等操作。在 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