1234567891011121314151617181920212223242526272829303132333435363738 |
- 'use strict';
- var callBound = require('call-bind/callBound');
- var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
- var Get = require('./Get');
- var ToObject = require('./ToObject');
- var ToPropertyDescriptor = require('./ToPropertyDescriptor');
- var forEach = require('../helpers/forEach');
- var getOwnPropertyDescriptor = require('gopd');
- var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
- var $push = callBound('Array.prototype.push');
- module.exports = function ObjectDefineProperties(O, Properties) {
- var props = ToObject(Properties);
- var keys = OwnPropertyKeys(props);
- var descriptors = [];
- forEach(keys, function (nextKey) {
- var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey));
- if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) {
- var descObj = Get(props, nextKey);
- var desc = ToPropertyDescriptor(descObj);
- $push(descriptors, [nextKey, desc]);
- }
- });
- forEach(descriptors, function (pair) {
- var P = pair[0];
- var desc = pair[1];
- DefinePropertyOrThrow(O, P, desc);
- });
- return O;
- };
|