Object.getOwnPropertyNames(obj)
returns all the properties of the object obj
. Object.keys(obj)
returns all enumerable properties.
They provide the same result unless you set enumerable: false
to any property.
In the following example, the screen
object has two properties, branch
and size
.
const screen = {
branch: 'Dell',
size: '27inch',
};
Object.getOwnPropertyNames(screen);
Object.keys(screen);
Let's define one more property named resolution
but it is set as enumerable: false
:
Object.defineProperties(screen, {
resolution: {
enumerable: false,
value: '2560 x 1440',
},
});
The resolution
property then doesn't appear in the list of Object.keys
:
Object.getOwnPropertyNames(screen);
Object.keys(screen);