判断对象中是否存在某个属性一般来说适用3种方法
in 操作符,缺点是会判断继承过来的属性Object.prototype.hasOwnProterty.call(myobje,'a')来判断tips in 操作符检查的是key键 of是值
for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
遍历对象及其原型链上可枚举的属性
Object.key()
返回对象自身可枚举属性组成的数组
不会遍历对象原型链上的属性以及 Symbol 属性
对数组的遍历顺序和 for in 一致
Object.getOwnPropertyNames
| ---------------------------- | 含原型属性 | 含不可枚举 | 含 Symbol 属性 | 返回值 |
|---|---|---|---|---|
| for...in | 是 | 否 | 否 | key |
| Object.keys | 否 | 否 | 否 | [key...] |
| Object.getOwnPropertyNames | 否 | 是 | 否 | [key...] |
| Object.getOwnPropertySymbols | 否 | 是(只有 symbol) | 是 | [key...] |
| Reflect.ownKeys | 否 | 是 | 是 | [key...] |
| Object.values | 否 | 否 | 否 | [value...] |
| Object.entries | 否 | 否 | 否 | [[key,value]...] |
Map:
Object: