164 votes

Comment fusionner deux objets javascript ensemble en ES6+ ?

Je suis malade et fatigué de toujours devoir écrire du code comme ça :

function shallowExtend(obj1,obj2){
  var key;
  for ( key in obj2 ) {
    if ( obj2.hasOwnProperty(key) === false )  continue;
    obj1[key] = obj2[key]
  }
}

Ou si je ne veux pas écrire le code moi-même, mettre en œuvre une bibliothèque qui le fait déjà. ES6+ va sûrement venir à la rescousse et nous fournira quelque chose comme une Object.prototype.extend(obj2...) o Object.extend(obj1,obj2...)

L'ES6+ offre-t-il cette fonctionnalité ? Si elle n'existe pas déjà, cette fonctionnalité est-elle prévue ? Si elle n'est pas prévue, pourquoi ?

5voto

RobG Points 41170

Peut-être que l'ES5 Object.defineProperties méthode fera l'affaire ?

par exemple

var a = {name:'fred'};
var b = {age: {value: 37, writeable: true}};

Object.defineProperties(a, b);

alert(a.age); // 37

Documentation MDN : https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperties

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X