UNPKG

805 BJavaScriptView Raw
1var DESCRIPTORS = require('../internals/descriptors');
2var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
3var anObject = require('../internals/an-object');
4var toPrimitive = require('../internals/to-primitive');
5
6var nativeDefineProperty = Object.defineProperty;
7
8// `Object.defineProperty` method
9// https://tc39.github.io/ecma262/#sec-object.defineproperty
10exports.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) { /* empty */ }
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};