17 lines
600 B
JavaScript
17 lines
600 B
JavaScript
var anObject = require('./_an-object');
|
|
var IE8_DOM_DEFINE = require('./_ie8-dom-define');
|
|
var toPrimitive = require('./_to-primitive');
|
|
var dP = Object.defineProperty;
|
|
|
|
exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {
|
|
anObject(O);
|
|
P = toPrimitive(P, true);
|
|
anObject(Attributes);
|
|
if (IE8_DOM_DEFINE) try {
|
|
return dP(O, P, Attributes);
|
|
} catch (e) { /* empty */ }
|
|
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
|
|
if ('value' in Attributes) O[P] = Attributes.value;
|
|
return O;
|
|
};
|