/* * Object.assign(), described in E6 Section 19.1.2.1 * * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-object.assign */ if (typeof Object.assign === 'undefined') { Object.defineProperty(Object, 'assign', { value: function (target) { var i, n, j, m, k; var source, keys; var gotError; var pendingError; if (target == null) { throw new Exception('target null or undefined'); } for (i = 1, n = arguments.length; i < n; i++) { source = arguments[i]; if (source == null) { continue; // null or undefined } source = Object(source); keys = Object.keys(source); // enumerable own keys for (j = 0, m = keys.length; j < m; j++) { k = keys[j]; try { target[k] = source[k]; } catch (e) { if (!gotError) { gotError = true; pendingError = e; } } } } if (gotError) { throw pendingError; } }, writable: true, enumerable: false, configurable: true }); }