Add polyfill for Object.assign()
This commit is contained in:
@@ -1,12 +1,42 @@
|
||||
goog.provide('ol.Object');
|
||||
goog.provide('ol.ObjectEvent');
|
||||
goog.provide('ol.ObjectEventType');
|
||||
goog.provide('ol.object');
|
||||
|
||||
goog.require('ol.events');
|
||||
goog.require('ol.events.Event');
|
||||
goog.require('ol.Observable');
|
||||
|
||||
|
||||
/**
|
||||
* Polyfill for Object.assign(). Assigns enumerable and own properties from
|
||||
* one or more source objects to a target object.
|
||||
*
|
||||
* @see https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
|
||||
* @param {!Object} target The target object.
|
||||
* @param {...Object} var_sources The source object(s).
|
||||
* @return {!Object} The modified target object.
|
||||
*/
|
||||
ol.object.assign = (typeof Object.assign === 'function') ? Object.assign : function(target, var_sources) {
|
||||
if (target === undefined || target === null) {
|
||||
throw new TypeError('Cannot convert undefined or null to object');
|
||||
}
|
||||
|
||||
var output = Object(target);
|
||||
for (var i = 1, ii = arguments.length; i < ii; ++i) {
|
||||
var source = arguments[i];
|
||||
if (source !== undefined && source !== null) {
|
||||
for (var key in source) {
|
||||
if (source.hasOwnProperty(key)) {
|
||||
output[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return output;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
|
||||
@@ -238,7 +238,37 @@ describe('ol.Object', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('ol.object.assign()', function() {
|
||||
|
||||
it('is an alias for Object.assign() where available', function() {
|
||||
if (typeof Object.assign === 'function') {
|
||||
expect(ol.object.assign).to.be(Object.assign);
|
||||
}
|
||||
});
|
||||
|
||||
it('assigns properties from a source object to a target object', function() {
|
||||
|
||||
var source = {
|
||||
sourceProp1: 'sourceValue1',
|
||||
sourceProp2: 'sourceValue2'
|
||||
};
|
||||
|
||||
var target = {
|
||||
sourceProp1: 'overridden',
|
||||
targetProp1: 'targetValue1'
|
||||
};
|
||||
|
||||
var assigned = ol.object.assign(target, source);
|
||||
expect(assigned).to.be(target);
|
||||
expect(assigned.sourceProp1).to.be('sourceValue1');
|
||||
expect(assigned.sourceProp2).to.be('sourceValue2');
|
||||
expect(assigned.targetProp1).to.be('targetValue1');
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
goog.require('ol.events');
|
||||
goog.require('ol.Object');
|
||||
goog.require('ol.ObjectEventType');
|
||||
goog.require('ol.events');
|
||||
goog.require('ol.object');
|
||||
|
||||
Reference in New Issue
Block a user