2016-09-12 2 views

ответ

4

Расширить: до мелкой копии свойства исходных объектов справа налево, вплоть до целевого объекта.

Пример: расширение лица и объектов работы и наоборот.

 //------------------------------------Extend-------------------------- 

     $scope.extendPersonToJob = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 
      // extend from Person to Job 

      $scope.personTojob = angular.extend(person, job); 
      //output : {{ 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } , 'Title': 'Programmer', 'Experience': '5'}    
     } 

     $scope.extendJobToPerson = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 

      // extend from job to person 
      $scope.jobToperson = angular.extend(job, person) 
      //output : {{ 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling' , 'place': 'Queenstown' } , 'Title': 'Programmer', 'Experience': '5'}    

     } 

Слияние заключается в глубокой (рекурсивно) копировании свойств исходных объектов на объект назначения.

Пример: объединить людей и объекты работы и наоборот.

//------------------------------------Merge------------------------------ 
     $scope.mergePersonToJob = function() { 

      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 
      // merge from Person to Job 

      $scope.personTojob = angular.merge(person, job); 

      //output : { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true', 'place': 'Queenstown' }, 'Title': 'Programmer', 'Experience': '5' }; 
     } 

     $scope.mergeJobToPerson = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 

      // merge from job to person 
      $scope.jobToperson = angular.merge(job, person) 

      // //output : { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'experience': '2', 'certified': 'true', 'place': 'Queenstown' }, 'Title': 'Programmer', 'Experience': '5' }; 
     } 

посмотрите этот Example и сравнить для лучшего понимания. пожалуйста, исправьте меня, если ошибаетесь.

ПК: David Cai's Blog

+0

@Shijil Narayan Я попытался объяснить глубокую (рекурсивную) копию и мелкую копию с использованием Merge и расширить пример с людьми и заданиями. – monikapatel

+0

Большое спасибо Монике. Пример, который вы дали, сделал вещи более ясными. –

+0

@ShijilNarayan Я рад помочь вам. но я только узнал, что ссылка на пример кода не была сохранена и показана угловая страница js по умолчанию. i applologies для этого. но я просто обновил его. – monikapatel

1

Из угловых документов.

В отличие от расширения(), слияние() рекурсивно спускается в свойства объекта из исходных объектов, выполняющих глубокую копию.

+0

Спасибо, Леви, но что еще означает глубокое копирование? –

+0

@ShijilNarayan, если у вас есть вложенные объекты, merge() также скопирует их, но с помощью функции extend() это не так. – levi

+0

Спасибо Levi за помощь –

Смежные вопросы