Skip to content

Commit f77b467

Browse files
committed
(just in case) make isDataDescriptor operation stricter
1 parent 67ed50d commit f77b467

3 files changed

Lines changed: 11 additions & 7 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var has = require('../internals/has');
2+
3+
module.exports = function (descriptor) {
4+
return descriptor !== undefined && (has(descriptor, 'value') || has(descriptor, 'writable'));
5+
};

packages/core-js/modules/es.reflect.get.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var $ = require('../internals/export');
22
var isObject = require('../internals/is-object');
33
var anObject = require('../internals/an-object');
4-
var has = require('../internals/has');
4+
var isDataDescriptor = require('../internals/is-data-descriptor');
55
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
66
var getPrototypeOf = require('../internals/object-get-prototype-of');
77

@@ -11,11 +11,10 @@ function get(target, propertyKey /* , receiver */) {
1111
var receiver = arguments.length < 3 ? target : arguments[2];
1212
var descriptor, prototype;
1313
if (anObject(target) === receiver) return target[propertyKey];
14-
if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')
14+
descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
15+
if (descriptor) return isDataDescriptor(descriptor)
1516
? descriptor.value
16-
: descriptor.get === undefined
17-
? undefined
18-
: descriptor.get.call(receiver);
17+
: descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
1918
if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
2019
}
2120

packages/core-js/modules/es.reflect.set.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var $ = require('../internals/export');
22
var anObject = require('../internals/an-object');
33
var isObject = require('../internals/is-object');
4-
var has = require('../internals/has');
4+
var isDataDescriptor = require('../internals/is-data-descriptor');
55
var fails = require('../internals/fails');
66
var definePropertyModule = require('../internals/object-define-property');
77
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
@@ -20,7 +20,7 @@ function set(target, propertyKey, V /* , receiver */) {
2020
}
2121
ownDescriptor = createPropertyDescriptor(0);
2222
}
23-
if (has(ownDescriptor, 'value')) {
23+
if (isDataDescriptor(ownDescriptor)) {
2424
if (ownDescriptor.writable === false || !isObject(receiver)) return false;
2525
if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
2626
if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;

0 commit comments

Comments
 (0)