大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,
都是获取对象中的所有属性, 并以数组的形式返回.
区别:
- Object.getOwnPropertyNames返回的是对象中所有自己的属性;
- Object.keys(obj)则返回的对象中所有自己的属性,也就是属性下的 enumerable: true 的属性
const obj = {};
Object.defineProperties(obj, {
name: {enumerable: true, value: '卡卡西'},
age: {enumerable: false, value: 25},
})
console.dir(Object.keys(obj))
console.dir(Object.getOwnPropertyNames(obj))
// 输出
> Array ["name"]
> Array ["name", "age"]
- 通过输出可以看到,
enumerable: false
的属性
Object.keys 获取不到。