глубокое объединение объектов с AngularJS

Обычно для поверхностного копирования объектов я бы использовалangular.extend()

Вот пример этого:

var object1 = {
  "key": "abc123def456",
  "message": {
    "subject": "Has a Question",
    "from": "[email protected]",
    "to": "[email protected]"
   }
};

var object2 = {
  "key": "00700916391"
};

console.log(angular.extend({}, object1, object2));

Дали бы нам:

{
 "key": "00700916391",
 "message": {
   "subject": "Has a Question",
   "from": "[email protected]",
   "to": "[email protected]"
  }
}

Но что, если я хочу объединить объекты, чтобы родительские ключи не перезаписывались дочерними объектами:

var object1 = {
  "key": "abc123def456",
  "message": {
    "subject": "Has a Question",
    "from": "[email protected]",
    "to": "[email protected]"
   }
};

var object2 = {
  "key": "00700916391",              //Overwrite me
  "message": {                       //Dont overwrite me!
    "subject": "Hey what's up?",     //Overwrite me
    "something": "something new"     //Add me
   }
};

console.log(merge(object1, object2));

Дали бы нам:

{
 "key": "00700916391",
 "message": {
   "subject": "Hey what's up?",
   "from": "[email protected]",
   "to": "[email protected]",
   "something": "something new"
  }
}

Есть ли угловая функция, которая уже делает глубокое слияние, о которой я не знаю?

Если нет, то есть ли родной способ сделать это в javascript рекурсивно для n уровней?

Ответы на вопрос(5)

Ваш ответ на вопрос