1 | var DESCRIPTORS = require('../internals/descriptors');
|
2 | var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
|
3 | var anObject = require('../internals/an-object');
|
4 | var toPrimitive = require('../internals/to-primitive');
|
5 |
|
6 | var nativeDefineProperty = Object.defineProperty;
|
7 |
|
8 |
|
9 |
|
10 | exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
|
11 | anObject(O);
|
12 | P = toPrimitive(P, true);
|
13 | anObject(Attributes);
|
14 | if (IE8_DOM_DEFINE) try {
|
15 | return nativeDefineProperty(O, P, Attributes);
|
16 | } catch (error) { }
|
17 | if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
|
18 | if ('value' in Attributes) O[P] = Attributes.value;
|
19 | return O;
|
20 | };
|