参考链接:https://blog.csdn.net/lgno2/article/details/124996065
对象属性的可枚举和不可枚举
for in 循环只能遍历可枚举的,如果含有 Symbol ,则无法遍历,会报错
Uncaught TypeError: obj is not iterable
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_of_properties
in |
for..in |
obj.hasOwnProperty |
obj.propertyIsEnumerable |
Object.keys |
Object.getOwnPropertyNames |
Object.getOwnPropertyDescriptors |
Reflect.ownKeys() |
|
自身的可枚举属性 |
true |
true |
true |
true |
true |
true |
true |
true |
自身的不可枚举属性 |
true |
false |
true |
false |
false |
true |
true |
true |
自身的 Symbol 键 |
true |
false |
true |
true |
false |
false |
true |
true |
继承的可枚举属性 |
true |
true |
false |
false |
false |
false |
false |
false |
继承的不可枚举属性 |
true |
false |
false |
false |
false |
false |
false |
false |
继承的 Symbol 键 |
true |
false |
false |
false |
false |
false |
false |
false |
JSON.stringify(xxx),此方法也只能读取对象本身的可枚举属性,并序列化为JSON对象。