Add Object.assign polyfill
This commit is contained in:
parent
1fca9658ce
commit
f796840fd3
|
@ -0,0 +1,27 @@
|
|||
/* eslint-disable */
|
||||
|
||||
// Taken from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
|
||||
if (typeof Object.assign != 'function') {
|
||||
Object.assign = function (target, varArgs) { // .length of function is 2
|
||||
'use strict';
|
||||
if (target == null) { // TypeError if undefined or null
|
||||
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) { // Skip over if undefined or null
|
||||
for (var nextKey in nextSource) {
|
||||
// Avoid bugs when hasOwnProperty is shadowed
|
||||
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
|
||||
to[nextKey] = nextSource[nextKey];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return to;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
/*= require extensions/object */
|
||||
|
||||
describe('Object extensions', () => {
|
||||
describe('assign', () => {
|
||||
it('merges source object into target object', () => {
|
||||
const targetObj = {};
|
||||
const sourceObj = {
|
||||
foo: 'bar',
|
||||
};
|
||||
Object.assign(targetObj, sourceObj);
|
||||
expect(targetObj.foo).toBe('bar');
|
||||
});
|
||||
|
||||
it('merges object with the same properties', () => {
|
||||
const targetObj = {
|
||||
foo: 'bar',
|
||||
};
|
||||
const sourceObj = {
|
||||
foo: 'baz',
|
||||
};
|
||||
Object.assign(targetObj, sourceObj);
|
||||
expect(targetObj.foo).toBe('baz');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue