123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
- if ($defineProperty) {
- try {
- $defineProperty({}, 'a', { value: 1 });
- } catch (e) {
-
- $defineProperty = null;
- }
- }
- var callBound = require('call-bind/callBound');
- var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
- module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {
- if (!$defineProperty) {
- if (!IsDataDescriptor(desc)) {
-
- return false;
- }
- if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {
- return false;
- }
-
- if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {
-
- return false;
- }
-
- var V = desc['[[Value]]'];
-
- O[P] = V;
- return SameValue(O[P], V);
- }
- $defineProperty(O, P, FromPropertyDescriptor(desc));
- return true;
- };
|