javascript - objects - object.assign array
ES5 Object.assign equivalente (2)
En underscore.js puedes usar como,
_.extend(firstObj, secondObj);
En jQuery, puedes usar,
$.extend({},firstObj,secondObj);
En javascipt puro, puede combinar n
cantidad de objetos utilizando esta función:
function mergeObjects() {
var resObj = {};
for(var i=0; i < arguments.length; i += 1) {
var obj = arguments[i],
keys = Object.keys(obj);
for(var j=0; j < keys.length; j += 1) {
resObj[keys[j]] = obj[keys[j]];
}
}
return resObj;
}
Quería hacer algo que fuera muy sencillo usando Object.assign
.
var firstObj = {name : "Saba H.", rollNo : 1};
var secondObj = {college : "WCE"};
var wholeObj = Object.assign(firstObj, secondObj);
console.log(wholeObj); // {name : "Saba H.", rollNo : 1, college : "WCE"}
Como Object.assign
es parte de la propuesta de armonía ECMAScript6 y no es compatible con muchos navegadores, ¿es posible hacerlo con ES5? Si no es así, ¿hay alguna micro biblioteca?
Encontré un polyfill de trabajo para Object.assign en MDN (impresionante, gracias!):
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) { // 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;
},
writable: true,
configurable: true
});
}