let obj = {
name: '张三',
age: '19',
}
obj[Symbol()] = Symbol(22312)
Object.defineProperty(obj, 'job', {
value: (v) => {
console.log(v)
},
enumerable: false
})
console.log(Object.keys(obj)) // ['name', 'age']
console.log(Reflect.ownKeys(obj)) // ['name', 'age', 'job', Symbol()]
console.log(Object.getOwnPropertyNames(obj)) // ['name', 'age', 'job']
由此可见
Object.keys() 方法会返回一个给可见定对象的自身可枚举属性组成的数组。
Reflect.ownKeys() 返回一个由目标对象自身的属性键组成的数组(所有属性)。
Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组。