@@ -3,18 +3,18 @@ export function includeKeys(object, predicate) {
3
3
4
4
if ( Array . isArray ( predicate ) ) {
5
5
for ( const key of predicate ) {
6
- if ( isEnumerable . call ( object , key ) ) {
7
- const descriptor = Object . getOwnPropertyDescriptor ( object , key ) ;
6
+ const descriptor = Object . getOwnPropertyDescriptor ( object , key ) ;
7
+ if ( descriptor ?. enumerable ) {
8
8
Object . defineProperty ( result , key , descriptor ) ;
9
9
}
10
10
}
11
11
} else {
12
- // `for ... of Reflect.ownKeys()` is faster than `for ... of Object.entries()`.
12
+ // `Reflect.ownKeys()` is required to retrieve symbol properties
13
13
for ( const key of Reflect . ownKeys ( object ) ) {
14
- if ( isEnumerable . call ( object , key ) ) {
14
+ const descriptor = Object . getOwnPropertyDescriptor ( object , key ) ;
15
+ if ( descriptor . enumerable ) {
15
16
const value = object [ key ] ;
16
17
if ( predicate ( key , value , object ) ) {
17
- const descriptor = Object . getOwnPropertyDescriptor ( object , key ) ;
18
18
Object . defineProperty ( result , key , descriptor ) ;
19
19
}
20
20
}
@@ -24,8 +24,6 @@ export function includeKeys(object, predicate) {
24
24
return result ;
25
25
}
26
26
27
- const { propertyIsEnumerable : isEnumerable } = Object . prototype ;
28
-
29
27
export function excludeKeys ( object , predicate ) {
30
28
if ( Array . isArray ( predicate ) ) {
31
29
const set = new Set ( predicate ) ;
0 commit comments