各种遍历方法以及注意点

简介: 各种遍历方法以及注意点

参考 : https://es6.ruanyifeng.com/#docs/object

可枚举性
对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

let obj = {
    foo: 123 };
Object.getOwnPropertyDescriptor(obj, 'foo')
//  {
   
//    value: 123,
//    writable: true,
//    enumerable: true,
//    configurable: true
//  }

描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,就表示某些操作会忽略当前属性。

目前,有四个操作会忽略enumerable为false的属性。

for...in循环:只遍历对象自身的和继承的可枚举的属性。
Object.keys():返回对象自身的所有可枚举的属性的键名。
JSON.stringify():只串行化对象自身的可枚举的属性。
Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。

//这四个操作之中,前三个是 ES5 就有的,最后一个Object.assign()是 ES6 新增

总的来说,操作中引入继承的属性会让问题复杂化,大多数时候,我们只关心对象自身的属性。所以,尽量不要用for...in循环,而用Object.keys()代替。
相关文章
|
4月前
集合中常见方法及遍历方式
集合中常见方法及遍历方式
32 1
|
7月前
|
C#
C# 循环遍历使用
C# 循环遍历使用
160 0
|
7月前
|
JavaScript 小程序
遍历类数组之获取多个dom节点并遍历
遍历类数组之获取多个dom节点并遍历
循环遍历的基本用法
循环遍历的基本用法
89 0
关于对象遍历的时候的一些排序问题
关于对象遍历的时候的一些排序问题
110 0
关于对象遍历的时候的一些排序问题
|
PHP 开发者
v-for遍历对象、数组
v-for遍历对象、数组
125 0
|
存储 分布式计算 并行计算
如何1分钟内完成遍历100T数据?
如何1分钟内完成遍历100T数据?
332 0
如何1分钟内完成遍历100T数据?
|
索引
属性遍历,会了又没完全会
我们来归类下,这些都属于哪些属性分类。 了解属性分类以后,让我们再想想 我们又如何获取person 对象的所有属性呢??
118 0
属性遍历,会了又没完全会