123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * @file
- * Provides a polyfill for Object.assign().
- *
- * This is needed for Internet Explorer 11 and Opera Mini.
- *
- * This has been copied from MDN Web Docs code samples. Code samples in the MDN
- * Web Docs are licensed under CC0.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
- * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets
- */
- if (typeof Object.assign !== 'function') {
- // Must be writable: true, enumerable: false, configurable: true
- Object.defineProperty(Object, 'assign', {
- value: function assign(target, varArgs) {
- // .length of function is 2
- 'use strict';
- if (target === null || target === undefined) {
- throw new TypeError('Cannot convert undefined or null to object');
- }
- var to = Object(target);
- for (var index = 1; index < arguments.length; index++) {
- var nextSource = arguments[index];
- if (nextSource !== null && nextSource !== undefined) {
- for (var nextKey in nextSource) {
- // Avoid bugs when hasOwnProperty is shadowed
- if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
- to[nextKey] = nextSource[nextKey];
- }
- }
- }
- }
- return to;
- },
- writable: true,
- configurable: true,
- });
- }
|