各种遍历方法以及注意点

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

参考 : 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()代替。
相关文章
|
3月前
集合中常见方法及遍历方式
集合中常见方法及遍历方式
30 1
|
2月前
|
索引 Python
如何优雅地遍历可迭代对象?
如何优雅地遍历可迭代对象?
25 0
|
4月前
|
存储
链表的遍历方式
链表的遍历方式
|
6月前
|
C#
C# 循环遍历使用
C# 循环遍历使用
153 0
|
6月前
|
JavaScript 小程序
遍历类数组之获取多个dom节点并遍历
遍历类数组之获取多个dom节点并遍历
关于对象遍历的时候的一些排序问题
关于对象遍历的时候的一些排序问题
104 0
关于对象遍历的时候的一些排序问题
ArrayList 三种遍历方法(for循环+下标、foreach、使用迭代器)
ArrayList 三种遍历方法(for循环+下标、foreach、使用迭代器)
v-for遍历对象、数组
v-for遍历对象、数组
120 0
|
安全 Java
遍历List移除元素的若干种方法
遍历List移除元素的若干种方法
348 0